Jür*_*aul 5 mysql sql indexing
我有一个数据透视表,当然每一行都将包含在查询中:
mysql> select * from blog_posts as bp
join blog_joins as bj
on bj.post_id=1
and bj.taxonomy_id=10
and bj.type = 1;
Run Code Online (Sandbox Code Playgroud)
这是我的表结构:

是否建议为每一列做一个索引?如果没有,为什么以及你会推荐什么?
mysql > alter table blog_joins add index pid (post_id);
mysql > alter table blog_joins add index tid (taxonomy_id);
mysql > alter table blog_joins add index tp (type);
Run Code Online (Sandbox Code Playgroud)
对于该特定查询,您可能会受益于多列索引:
alter table blog_joins add index pid_tid_tp (post_id,taxonomy_id,type);
Run Code Online (Sandbox Code Playgroud)
我建议分析您的代码。尝试将真实数据添加到您的测试数据库并尝试一些不同的索引。用EXPLAIN看哪个指标MySQL的实际使用为每个查询。
完成测试后,删除所有未使用的索引,因为虽然索引可以加快查询速度,但也会减慢对表的修改速度。
| 归档时间: |
|
| 查看次数: |
1087 次 |
| 最近记录: |