MySQL性能-大型数据库

MySQL性能-大型数据库,mysql,Mysql,我在这里读了大量关于stackoverflow的文章、博客文章、教程等,但我仍然无法解决MySQL数据库的一个相当严重的性能问题。请记住,对于大型MySQL数据库,我是个新手 我有一张大约11.000.000行的桌子,会增加到20.000.000行或更多。布局如下: CREATE TABLE `myTable` ( `intcol1` int(11) DEFAULT NULL, `charcol1` char(25) DEFAULT NULL, `intcol2` int(11) D

我在这里读了大量关于stackoverflow的文章、博客文章、教程等,但我仍然无法解决MySQL数据库的一个相当严重的性能问题。请记住,对于大型MySQL数据库,我是个新手

我有一张大约11.000.000行的桌子,会增加到20.000.000行或更多。布局如下:

CREATE TABLE `myTable` (
  `intcol1` int(11) DEFAULT NULL,
  `charcol1` char(25) DEFAULT NULL,
  `intcol2` int(11) DEFAULT NULL,
  `charcol2` char(50) DEFAULT NULL,
  `charcol3` char(50) DEFAULT NULL,
  `charcol4` char(50) DEFAULT NULL,
  `intcol3` int(11) DEFAULT NULL,
  `charcol5` char(50) DEFAULT NULL,
  `intcol4` int(20) DEFAULT NULL,
  `intcol5` int(20) DEFAULT NULL,
  `intcol6` int(20) DEFAULT NULL,
  `intcol7` int(11) DEFAULT NULL,
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `idx` (`charcol2`,`charcol3`)
) ENGINE=MyISAM AUTO_INCREMENT=11665231 DEFAULT CHARSET=latin1;
select语句,如

从myTable中选择*,其中charchol2='bogus'和charcol3='bogus2'

执行大约需要25秒。这太慢了,而且会随着桌子的增长而变得更慢

可以说,该表没有任何插入或更新,主要用于输出对char列的搜索

正如你所看到的,我试着让索引与全文一起工作,但似乎我遗漏了一些东西。关于如何提高性能有什么看法

请注意:我目前在我的MacBookAir 1.7GHz i5,4GB内存上运行MySQL。如果这是我的性能问题的唯一答案,我会将数据库移动到适当的位置-

编辑:解释表格

id选择\u类型表类型可能的\u键\u长度参考行额外
1 SIMPLE myTable ALL NULL 11596725使用where

您不需要为此类请求创建全文索引,其中使用了相等运算符。只需在每个char字段上创建一个索引,该索引将在WHERE条件下使用,并删除全文索引:

DROP INDEX idx;
ALTER TABLE myTable ADD INDEX charchol_idx (charchol2, charchol3);

请为您的查询提供解释结果。我认为,这些查询不需要全文索引。查询需要25秒才能执行,但您收到了多少行?你提到的索引的索引基数是多少?为什么MyISAM而不是InnoDB配置为使用80%的RAM?我认为就像@user4035一样,您不需要全文索引。但是,如果您想知道mysql正在做什么,请尝试从myTable中ExplainSELECT*,其中charchol2='bogus'和charcol3='bogus2'检查mysql是否可以使用索引等@N.B.:收到6行。MyISAM因为我想尝试全文。不过,InnoDB的速度差不多。@user4035:Explain显示:id选择类型表类型可能的键键键长度参考行额外1个简单myTable所有idx NULL 11596668使用where