阅读this我现在知道何时使用索引以及何时不使用索引。但我有一个问题;在具有有限数量的可能值的列上使用索引有助于加速查询(SELECT-ing)?请考虑以下事项:
Table "companies": id, district_id, name
Table "districts": id, name
地区数量永远不会超过5个条目。我应该在companies.district_id上使用索引吗?我在某个地方阅读(无法找到链接:()它不会有帮助,因为值不是很多,在很多情况下它实际上会减慢查询速度。
PS:两张桌子都是MyISAM
答案 0 :(得分:3)
几乎从来就不是优化器使用的低基数列的INDEX。
另一方面,"复合指数" 可能有用。例如,INDEX(district_id, name)
有用吗?
使用INDEX(district_id)
会减慢INSERT,因为无论何时插入行都会添加索引。它不会减慢SELECT,除了优化程序注意索引并拒绝它的少量时间。
(我的陈述适用于MyISAM和InnoDB。)
对此答案的更多讨论: MySQL: Building the best INDEX for a given SELECT: Flags and Low Cardinality