2012-03-13 37 views
0

我有一个存储在MySQL数据库中的维基百科(〜30GO for english)的本地副本。 我有两列:MySQL SELECT查询在维基百科本地副本上需要一段时间

  1. “称号” whitch是主键和文章的标题(VARCHAR(238))
  2. “身体” whitch是文章的内容(MEDIUMTEXT)

我的问题是,对于一个非常简单的查询(使用主键)它需要一段时间(〜50毫秒是太多了,因为我创建的程序,从这些文章从10种语言sequencialy信息; 2篇文章对于每种语言)/秒太少)。

查询如下:

SELECT * FROM wiki_en WHERE title = "Appel" LIMIT 1 

我不知道为什么花了这么长时间(usualy,我选择查询使用索引时需要1ms的〜)。

+0

你有索引吗? – 2012-03-13 23:23:08

+0

如果它真的是主键,那么你的查询将产生一个唯一的行,所以你不需要一个'LIMIT'子句。 – Neil 2012-03-13 23:36:20

+0

这是吉字节英语:) – biziclop 2012-03-13 23:43:39

回答

0

试试这个:

analyze table wiki_en; 

然后再次运行该查询。

另外,不推荐使用这样的“宽”键。为什么不使用一个简单的整数ID字段(就像那里所有表格的99%)?

最后,你真的在​​你的表定义中定义titlePRIMARY KEY吗?如果不是,则需要CREATE UNIQUE INDEX ...

+0

我使用标题作为索引,所以我可以找到一篇文章与他的名字,尽管他的ID(我扫描每篇文章,并为每个我寻找其他语言的维基链接,所以我可以得到这篇文章为每种语言) 。标题被定义为主键。 – 2012-03-14 00:06:28

+0

我试图分析表格,但我没有帮助... – 2012-03-14 00:37:22