2011-11-08 62 views
5

只是一个问题。我的网站变得非常慢。加载时间在30k行上超过30秒。我必须说查询没有被优化,因此10k查询可以被解雇,但是我仍然觉得这需要太长的时间...所以我想,让我们来检查索引。查看了一些'问题'表后,我看到我对多列进行了索引,但基数仅显示在1列,其他索引有0基数。MySQL如何存储索引?

我做了错误的索引吗?换句话说,我应该为每一列制作索引而不是合并它们?

+2

做这些领域均具有相同的价值观? – GolezTrol

+0

您应该启用慢日志记录来查找您遇到问题的查询,然后通过EXPLAIN运行它们,并在此处或在新问题中发布结果。 – hafichuk

+0

不,只有1个字段。以此截图为例:http://imageshack.us/f/812/schermafbeelding2011110kj.png/这是一张包含35.721行的预订表。 – Ben

回答

3

几乎可以肯定的是,你创建了错误的索引。大多数人会这样做:-)

没有规则可以在多列与单列之间创建索引。要创建的最佳索引取决于您运行的查询,而不是数据库模式。

分析查询和决定索引是一个细致的过程。您可以使用EXPLAIN来查看给定查询如何使用现有索引。请务必阅读的文档:

+0

感谢您的回复。我知道我应该对最常用于过滤来自表格的数据的列进行索引。截图中的列(请参阅startpost中的评论)是最常用的。感谢您的链接,尽管我熟悉使用EXPLAIN语法。 :) – Ben