qq_41265012
2018-06-01 06:25
采纳率: 94%
浏览 1.6k

mysql 多个order 是不是会导致索引失效

我发现网站使用order by id desc的时候,效率很高,使用order by id desc,time desc 数据库cpu100%了

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • xuwen666 2018-06-01 06:30
    已采纳

    a.alter table table_name disable keys b.loading data c.alter table table_name enable keys 对于Innodb: a.将要导入的数据按照主键排序 b.set unique_checks=0,关闭唯一性校验 c.set autocommit=0,关闭自动提交
    索引并不是时时都会生效的,比如以下几种情况,将导致索引失效:
    注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引
    2.对于多列索引,不是使用的第一部分,则不会使用索引
    3.like查询是以%开头
    4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
    5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引
    此外,查看索引的使用情况
    show status like ‘Handler_read%’;

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • jaylin118 2018-06-01 06:32

    mysql一次查询只能使用一个索引。如果要对多个字段使用索引,建立复合索引。
    这个建议加(id, time)联合索引,可以使用Explain查看一下执行分析,可以帮助分析SQL,优化查询。

    评论
    解决 无用
    打赏 举报
  • dengjin_fang 2018-06-01 07:41

    可以在order字段建索引。

    评论
    解决 无用
    打赏 举报
  • 大风车码农 2018-06-01 09:25

    其实用不用到索引,你可以通过在查询语句前加上关键字 explain或者desc ,然后你就可以看到了;上面字段的意思可以去百度查看;我记得有个字段是显示用的索引;自己试试吧

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题