关于#mysql#的问题,in造成别的索引失效,如何解决?

尊的很生气!mysql查询中可恶的【in】造成了order by字段的索引失效!请问有啥解决办法吗?

select id from tr_testrecord WHERE del_flag = 0 and TR_TMID_TM in ("1", "2") order by tr_testdatetime desc LIMIT 0,10;


使用EXISTS代替in 或者子查询,UNION 等关联查询

把你的SQL贴一下

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/855568
  • 这篇博客你也可以参考下:MySQL的order by不使用索引的解决办法
  • 你还可以看下mysql参考手册中的 MySQL 索引
  • 除此之外, 这篇博客: Mysql热点问题总结中的 无条件查询,order by后面的字段是索引字段,也会进行排序 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •   因为Mysql的优化器认为,走二级索引,再回表的成本比全表扫描排序更高。所以会选择走全局扫描,再选择一种排序方式进行排序(全字段排序 or rowid 排序)。