当前位置:首页 > SQL > 正文内容

mysql字段类型不一致导致的索引问题记录

高老师5年前 (2021-12-27)SQL3497

项目中出现SQL慢查询导致影响用户使用,原因是两个索引字段的类型不同导致无法使用索引,使用CONCAT转换为字符串即可解决

原始SQL:

SELECT
*
FROM
hqew_order_goods og
LEFT JOIN hqew_remove_list ri ON ri.order_rec_id = og.rec_id
AND real_removal_numbers > 8888
LEFT JOIN hqew_all_stock sl ON sl.removal_item_id = ri.id
AND sl.stock_log_type = 88
WHERE
( og.order_id = '888888' )
AND ( og.removal_numbers > 0 )

SQL问题点:(字段类型不同)

ri.order_rec_id = og.rec_id

修正SQL:

SELECT
*
FROM
hqew_order_goods og
LEFT JOIN hqew_remove_list ri ON ri.order_rec_id = CONCAT( og.rec_id, '' )
AND real_removal_numbers > 8888
LEFT JOIN hqew_all_stock sl ON sl.removal_item_id = ri.id
AND sl.stock_log_type = 88
WHERE
( og.order_id = '888888' )
AND ( og.removal_numbers > 0 )

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/360.html

分享给朋友:

“mysql字段类型不一致导致的索引问题记录” 的相关文章

MySql基本的建表原则

MySql基本的建表原则

1.定长和变长的分离 如int,char,time所占字节是固定的字段放在一张表 如varchar,text所占字节不确定的字段放在一张表中2.常用字段和不常用字段进行分离,根据查询频率来设计3.一对多的关联表可以添加冗余字段,如商品分类表 和商品表 ,在首页中需要显示每个分类商...

Mysql exists型子查询

Mysql exists型子查询

需求查询出存在商品的商品分类.    先看看分类表:id(分类的id)    catename(分类名) 1         手机 2 &n...

mysql全文检索,mysql使用全文索引,mysql5.7全文索引

mysql全文检索,mysql使用全文索引,mysql5.7全文索引

1.查看歌曲表结构(主要是给name字段添加全文索引)(mysql5.7才支持全中文索引)desc   music; +---------+-------------+------+-----+---------+----------------+ | Fie...

inner join 和 form a,b区别和速度

inner join 和 form a,b区别和速度

在项目中发现大量的form连接表,就开始质疑inner join 和 form a,b的性能问题。找到一份有价值的资料,特别记录:ANSI SQL规范首选INNER JOIN语法。此外,尽管使用WHERE子句定义联结的确比较简单,但是使用明确的联结语法能够确保不会忘记联结条件,有时候这样做也能影响性...

mysql null转空字符串,mysql null转0

mysql null转空字符串,mysql null转0

项目中查询数据部分字段出现null,影响到了排序,但是由于没有数据库权限,还想将null转为其他值表示;例如现有表member的原始数据:SELECT  *  FROM  memberid    &n...

mysql 自定义排序,mysql 自定义字段排序,mysql 强制自定义排序

mysql 自定义排序,mysql 自定义字段排序,mysql 强制自定义排序

通常我们使用自定义排序的语法是:ORDER BY FIELD(`字段名称`, 值1, 值2, 值3),但是如果我想强制值1到值3永远在前面,这个语法是满足不了的.(1).基本的会员数据表:id      name  &n...