MySQL如何避免全表扫描
1 >数据表太小,做完整的表扫描比查找索引键要快得多,通常是在表的总记录小于10和记录长度短的情况下完成的。
2 >没有适合于子句或WHERE子句的索引字段。
3 >让索引字段和常量值比较,MySQL已经计算(基于索引树)对大部分数据表进行了覆盖,所以全表扫描应该更快。
4 >使用其他字段使用一个非常小的索引键(许多记录与索引键值匹配)。在这种情况下,MySQL认为使用索引键需要大量查找,而不是像一个完整的表扫描那样快。
全表扫描通常更适合小表,但对于大表,请尝试使用以下技术,以避免优化器错误地选择完整的表扫描:
1 >执行表的索引键的分布是由分析表tbl_name更新扫描。
2 >使用力索引告诉MySQL,全表扫描比使用给定索引更浪费。
SELECT * FROM T1、T2力量指数(index_for_column)
在col_name = t2.col_name T1;
当3 >启动mysqld,它使用参数-最大寻找关键= 1000或= 1000 max_seeks_for_key告诉优化器。所有索引不会导致超过1000个索引搜索。