如果我创建索引,SQL查询要快得多

Joh*_*ith 8 php mysql database

如果我在一个包含13列的表中创建8个索引,这样可以吗?

如果我从中选择数据并按键对结果进行排序,则查询速度非常快,但如果排序字段不是键,则速度要慢得多.比较慢40倍.

我基本上要问的是,如果在数据库中有很多键有任何副作用......

Jon*_*Jon 8

在表上创建索引减慢所有写操作就可以了一点,但在相关栏目加快读取操作很多.如果你的应用程序不会对该表进行大量的写操作(大多数应用程序都是这样),那么你就没事了.


Bil*_*win 5

不要创建冗余或未使用的索引.但是,请创建优化所运行查询所需的索引.

您可以根据查询在任何表中选择索引.每个查询可能使用不同的索引,因此仔细分析您的查询是值得的.请参阅我的演示文稿MENTOR Your Indexes.我还在我的" SQL反模式:避免数据库编程的缺陷"一书中的索引章节中介绍了类似的信息.

关于有多少索引太多没有具体规则.在Oracle SQL Tuning Pocket Reference中,作者Mark Gurry说:

我的建议是避免规则说明网站不会有超过一定数量的索引.底线是所有SQL语句都必须可以运行.总有办法实现这一目标.如果它需要一个表上的10个索引,那么你应该在表上放置10个索引.

有一些很好的工具可以帮助您在Percona Toolkit中找到MySQL的冗余或未使用的索引:http: //www.percona.com/doc/percona-toolkit/pt-duplicate-key-checker.htmlpt-index - 使用.