索引引用不到(求高手赐教)

guoyang842 2012-05-29 06:43:47
create table aa(
aa_date date,
aa_server int(2),
key aa_date(date)
);
insert into aa('2011-11-03',0);



查询
explain select * from aa where aa_date>=?;
或者
explain select * from aa where aa_date<=?;

后面的查询离职检索出的列超过一定数量就不会引用索引了,>=超过230就不会引用索引了,type是all,后面的说明也没有用到索引

而写成
explain select date from aa where aa_date<=?;
又可以引用到,怎么样在查询全部字段的情况下用到索引。

求高手解释并赐教谢谢
...全文
110 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
小小小小蜗牛 2012-06-04
  • 打赏
  • 举报
回复
找了下 找不到 你不用主键 用index看看
ACMAIN_CHM 2012-05-30
  • 打赏
  • 举报
回复
[Quote]每个表的索引被查询,并且使用最好的索引,除非优化器认为使用表扫描更有效。是否使用扫描取决于是否最好的索引跨越超过30%的表。优化器更加复杂,其估计基于其它因素,例如表大小、行数和I/O块大小,因此固定比例不再决定选择使用索引还是扫描。
[/Quote]
ACMAIN_CHM 2012-05-30
  • 打赏
  • 举报
回复
当MYSQL认为符合条件的记录所占的比例较大时,MYSQL就不会再使用索引,而是直接全面扫描。
guoyang842 2012-05-30
  • 打赏
  • 举报
回复
内网的数据,贴不出来。就是随便插几百天的数据,当查询条件的天数占数据中大部分时,索引引用不到
explain查出来的数据 key是null,type 也是all row是检索了全表行数
Rotel-刘志东 2012-05-30
  • 打赏
  • 举报
回复
贴出执行计划。
guoyang842 2012-05-30
  • 打赏
  • 举报
回复
没有人知道吗,怎么样才可以使用到索引
Rotel-刘志东 2012-05-30
  • 打赏
  • 举报
回复
mysql的数据量比较大,符合条件的记录比较多的时候,mysql
全表扫描时不走索引的。
Rotel-刘志东 2012-05-30
  • 打赏
  • 举报
回复
当mysql的数据量条件中占的比例比较大时候,是不走索引的。
guoyang842 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用每个表的索引被查询,并且使用最好的索引,除非优化器认为使用表扫描更有效。是否使用扫描取决于是否最好的索引跨越超过30%的表。优化器更加复杂,其估计基于其它因素,例如表大小、行数和I/O块大小,因此固定比例不再决定选择使用索引还是扫描。
[/Quote]
请问有在查询时指定使用这个索引的措施吗?
rucypli 2012-05-29
  • 打赏
  • 举报
回复
用不到索引说明mysql考虑到走索引的消耗比不走索引更大

56,937

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧