2021-09-01
Mysql SQL索引优化group by求思路
mysql遇到一个问题:
select * from table where A=1 and B between 20210802 and 20210901 group by C;
像这种SQL,如何加索引最好?
1.假如加(A,B,C)索引,虽然满足最左原则,但是group by C不能用索引消除,会产生Using temporary; Using filesort
2.假如加(C,A,B)索引,然后用索引消除了排序,但是不满足最左原则,过滤性很查,只能走个ICP
我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
回答交流
Markdown
请输入正文
提交
相关推荐
怎么理解全索引扫描??
回答 1
fullindexscan:全索引扫描,查询时,遍历索引树来获取数据行。如果数据不是密集的会产生随机IO,在执行计划中是Type列,indexfulltablescan:通过读物理表获取数据,顺序读磁
MySQL 物理机怎么访问虚拟机?
回答 1
跟真机没有差别
MySQL 8.0.34 IO利用不如MySQL 5.7.34
回答 6
这不是说明8.0的性能更好么
mysql表里的数据统计功能如何实现?
回答 2
已采纳
怎么统计都离不开要执行SQL。框架也是对SQL进行包装的吧。
请问下 MySQL安装完成后,驱动包在数据库的哪个路径呢
回答 2
安装完mysql不会安装驱动包,去官网下载:https://dev.mysql.com/downloads/
mysql如何判断io线程是否存在延迟?
回答 1
在从库showslavestatus里面查看io延迟的话,你看SecondsBehindMaster,从库落后主库的时间,以秒为单位
windows平台的mysql5.7,data目录下出现ib_XXXX_XXXXXXXX_trunc.log,是个什么文件
回答 2
已采纳
找到了个undo的描述:/UNDOlogtruncatelogger.Neededtotrackstateoftruncateduringcrash.Anauxiliaryredologfileund
mysql多用户连接时,会自动宕掉,这可能是什么原因?
回答 2
自动宕掉是指mysqld挂了?可能是发生OOM了,可以查下单个用户的分配的内存大小是多少,调整下内存相关的参数。
为什么mysql会在0点弹出cmd窗口又马上消失啊?
回答 2
已采纳
看下Windows的计划任务程序,是否设置了0点运行一个bat程序了。
MySQL为什么在单表数据量达到千万/亿级别时性能比百万级别时差很多?
回答 1
已采纳
按照Btree的原理,你只要用索引1千万和10亿的层级一样高。如果性能差很多,看看执行计划是不是全表了。
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~