ToB企服应用市场:ToB评测及商务社交产业平台
标题:
记一次MySql唯一索引在left join连表查询没走索引的问题
[打印本页]
作者:
大号在练葵花宝典
时间:
2022-6-22 13:27
标题:
记一次MySql唯一索引在left join连表查询没走索引的问题
在新建一张账单结算信息表bill_settlement_info的时候,建立的唯一索引uk_bill_no(bill_no,tenant_id)。由于列表查询用到该表的字段。所以在sql中自然做了jeft join查询。
on条件是bill.billNo=bill_settlement_info.billNo。
自然认为这样的链表会走bill_settlement_info的索引。但是上线生产后,由于生产数据增长很快。立马发现列表查询时,使用bill_settlement_info表中的字段过滤数据时。查询超时。
排查后发现是慢SQL导致。
使用explan分析查询语句发现是连表bill_settlement_info查询时。没有走索引。连表语句:
select * from bill left join bill_settlement_info on bill.bill_no = bill_settlement_info.bill_no
在on条件中加上tenant_id后,重新explan后发现走了索引
select * from bill left join bill_settlement_info on bill.bill_no = bill_settlement_info.bill_no and bill.tenant_id = bill_settlement_info.tenant_id
所以能得出结论。MySql的唯一索引是严格按照左匹配原则的。
来源:
https://www.cnblogs.com/zhuzhen/p/16355075.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4