数码资讯
MySQL如何避免全表扫描
在以下条件下,MySQL将执行全表扫描: 1 >数据表太小,做完整的表扫描比查找索引键要快得多,通常是在表的总记录小于10和记录长度短的情况下完成的。 2 >没有适合于子句或WHERE子句的索引字段。 3 >让索引字段和常量值比较,MySQL已经计算(基于索引树)对大部分数据表进行了覆盖,所以全表扫
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
在以下条件下,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个索引搜索。
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个索引搜索。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。