分析MySQL索引优化:一个实际案例分析(mysql索引案例)
MySQL索引优化分析一个实际案例分析
MySQL索引优化是一个很重要的话题,用于加快查询速度,改善性能,其中主要研究的是索引优化。这里,我将分析一个实际的MySQL案例,以分析MySQL索引优化的性能收益。
MySQL案例具有如下表结构:
mysql> desc products;
+————–+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————–+————–+——+—–+———+—————-+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| category | varchar(255) | NO | | NULL | |
| price | float | NO | | NULL | |
| description | text | YES | | NULL | |
| sold_numbers | int(11) | NO | | 0 | |
+————–+————–+——+—–+———+—————-+
首先,分析表的字段,其中name、category两个字段会大量用于查询,因此建议创建一个联合索引:
ALTER TABLE products ADD INDEX index_name_category_old (name,category);
随后会发现,当查询的name字段的值只有部分时,该索引不能有效发挥索引功能,例如:
SELECT * FROM products WHERE name LIKE ‘%汽车%’ AND category = ‘自动’;
根据这种偏移查询形式,则建议删除之前创建的索引,并创建新的复合索引(给name字段设置前缀索引):
ALTER TABLE products DROP INDEX index_name_category_old;
ALTER TABLE products ADD INDEX index_name_category_new (name(20),category);
这样就可以提高表查询的效率。
最后,为了提高表的查询效率,还需要对sold_numbers字段创建一个单独的索引:
ALTER TABLE products ADD INDEX index_sold_numbers (sold_numbers);
通过以上的索引优化,能够极大的提高MySQL查询的效率,避免滥用索引,否则不利于查询的性能。