`
xitonga
  • 浏览: 589338 次
文章分类
社区版块
存档分类
最新评论

连接MySQL库的应用某页显示的数据总是每次都不一样,仔细分析了SQL

 
阅读更多


-- 最后几条数据不一样,就是, 每执行一次SQL,最后几条数据都不一样,从slow log里面取出如下页面sql如下:


SELECT SQL_NO_CACHE tg.`sort`,tg.`begin_time`, tg.`id`, SUM(tvi.available_number) AS T ,tg.`id`,tg.`team_code`,tg.`team_name`,tg.`goods_sn`
FROM team_vdepot_xxxxxx AS tvi
INNER JOIN team_goods AS tg ON tvi.goods_sn=tg.goods_sn
INNER JOIN product_goods AS pg ON tvi.goods_sn = pg.goods_sn
WHERE tg.is_on_sell = 1 AND pg.market_price > 0
AND tg.team_price > 0 AND tg.team_type !='2'
AND tg.team_code IN('02','163','01')
AND (FIND_IN_SET('1',tg.`city`) OR FIND_IN_SET('1',tg.`city`)) AND tg.team_type = '1' AND (NOW() < tg.end_time AND tg.begin_time < DATE_ADD(NOW(),INTERVAL `head_time` HOUR))
GROUP BY tg.goods_sn HAVING T >0
ORDER BY tg.sort DESC,tg.begin_time DESC
LIMIT 0,15;


【】分析了一下,问题出在order by上面,因为ORDER BY tg.sort DESC,tg.begin_time DESC的最后4个记录中 sort和begin_time值一模一样,而且这样的
数据有10多条,但是每次sort>0的有11条记录,而limit15所以sort=0只取4个,次数多了,可能随机最后4条的记录会不一致啊,解决办法在 ORDER BY tg.sort DESC,tg.begin_time DESC 后面再加一个tg.`id` ASC,因为id是自增主键,所以排序后每条记录的顺序都是唯一的,虽然数据正常了,但是效率也变低了一点点!不过页面总算显示正常了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics