项目中出现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 )
例如我们需要查询商品表中每个分类中商品id最大的记录,并且显示商品价格以下是表结构:id catename title &nb...
1.MyISAM 建立一个MyISAM引擎的表时,就会在本地磁盘上建立三个文件,.frm格式文件,存储表定义;.MYD格式文件,存储数据;MYI格式文件,存储索引;方便数据迁移,我只需将mysql安装目录下data文件中的表文件复制即可完成数据迁移,之前在搬迁多个dedecms中深有体会。 ...
触发器是一种特殊的事务,可以监听到Mysql的(insert/update/delete)的操作并触发相应的(insert/update/delete)操作. 触发器的创建主要有4个要素:(1).监听地点(...
1.查看歌曲表结构(主要是给name字段添加全文索引)(mysql5.7才支持全中文索引)desc music; +---------+-------------+------+-----+---------+----------------+ | Fie...
已有表名log来记录用户日志,id是主键,uid是用户id,rmk是备注,addtime是时间戳,需要取出不重复的用户日志记录默认的结果集:id uid rmk ...
(1).下面是一张基本的会员表membermid name age 1 高峰 24 2 王小 19 3 韩星 24(2).下面是一张基本的会员日志表loglid ...