在以下几种条件下,mysql就会做全表扫描:
1>数据表是在太小了,做一次全表扫描比做索引键的查找来得快多了。当表的记录总数小于10且记录长度比较短时通常这么做。
2>没有合适用于 on 或 where 分句的索引字段。
3>让索引字段和常量值比较,mysql已经计算(基于索引树)到常量覆盖了数据表的很大部分,因此做全表扫描应该会来得更快。
4>通过其他字段使用了一个基数很小(很多记录匹配索引键值)的索引键。这种情况下,mysql认为使用索引键需要大量查找,还不如全表扫描来得更快。
对于小表来说,全表扫描通常更合适。但是对大表来说,尝试使用以下技术来避免让优化程序错误地选择全表扫描:
1>执行 analyze table tbl_name 更新要扫描的表的索引键分布。
2> 使用 force index 告诉mysql,做全表扫描的话会比利用给定的索引更浪费资源。
select * from t1, t2 force index (index_for_column)
where t1.col_name=t2.col_name;
3>启动 mysqld 时使用参数 --max-seeks-for-key=1000 或者执行 set max_seeks_for_key=1000 来告诉优化程序,所有的索引都不会导致超过1000次的索引搜索。
如对本文有疑问,
点击进行留言回复!!
相关文章:
-
-
-
-
redis数据库1
大纲:理论:数据库分类Redis重要特性redis应用场景实验:安装redisredis基本操作命令redis持...
[阅读全文]
-
第十五周作业作业
1、导入hellodb.sql生成数据库(1)在students表中,查询年龄大于25岁,且为男性的同学的名字和...
[阅读全文]
-
一致性Hash分析
Hash算法应用场景Hash算法在很多分布式集群产品中都有应用,比如分布式集群架构Redis、Hadoop、El...
[阅读全文]
-
-
-
暑期记录
本周学习MySQL安装使用yum安装所需软件包[root@localhost ~]# yum -y instal...
[阅读全文]
-
-
Kafka控制器
1.ZookeeperZookeeper对Kafka集群的管理操作主要是用了它的两个功能节点(临时节点【zook...
[阅读全文]
网友评论