mysql> ALTER TABLE customer ADD INDEX idx_sub
(subscription)
mysql> EXPLAIN SELECT name FROM customer
WHERE subscription='2009-01-01' ORDER BY name
*************************** 1. row ***************************
...
type: ref
key: idx_sub
rows: 4370
Extra: Using where; Using filesort
理想的方式:
mysql> ALTER TABLE customer ADD INDEX
idx_sub_name (subscription,name)
mysql> EXPLAIN SELECT name FROM customer
WHERE subscription='2009-01-01' ORDER BY name
*************************** 1. row ***************************
...
type: ref
key: idx_sub_name
rows: 4363
Extra: Using where; Using index
以下是您可以使用哪个索引以及何时使用的一些解释:
首先,索引加快了检索速度,但减慢了插入和删除速度,以及索引列中值的更新速度。也就是说,索引会减慢大多数涉及写入的操作。发生这种情况是因为写入记录不仅需要写入数据行,还需要更改任何索引。表的索引越多,需要进行的更改就越多,平均性能下降就越大。在“高效加载数据”部分,我们将更详细地介绍这种现象以及您可以采取的措施。
第二,一个索引占用磁盘空间,多个索引占用相应的空间。与没有索引的情况相比,这可能会导致您更快地达到表的大小限制。
例子:
理想的方式:
基准:
运行查询的平均秒数:
覆盖指数:
有关的: