mysql数据库 *** 作耗时很久是什么原因

mysql数据库 *** 作耗时很久是什么原因,第1张

Mysql查询语句慢,执行时间长和等待时间长的原因

没有索引或没用好索引(单值索引和复合索引)

关联查询太多join,

服务器调优及各个参数设置(缓冲,线程数等)

第一种:MySQL 随机排序常规写法:展开目录

SELECT*FROMusersWHEREtotalScoreBETWEEN5AND100ORDERBYRAND()LIMIT100

执行耗时 1.18s

SELECT*FROMusersWHEREtotalScoreBETWEEN5AND100ORDERBYRAND()LIMIT100

执行耗时 1.25s

这样的耗时不能接受。

第二种:stackoverflow 上找了一个黑科技写法:展开目录

SELECT*FROMusersWHEREtotalScoreBETWEEN5AND100ORDERBY37*(UNIX_TIMESTAMP() ^id) &0xffffLIMIT100

执行耗时 150ms

SELECT*FROMusersWHEREtotalScoreBETWEEN5AND100ORDERBY37*(UNIX_TIMESTAMP() ^id) &0xffffLIMIT100

执行耗时 153ms

执行耗时直接缩短至 150ms,已经比上一个写法快很多了,而且 LIMIT 1000 时耗时也是 150ms 左右。

第三种方式:展开目录

SELECT*

FROMusersASu

INNERJOIN(SELECTidFROMusersWHEREtotalScoreBETWEEN5AND100ORDERBYRAND()LIMIT100)AStONt.id=u.id

WHERE1

执行耗时 110ms

LIMIT 1000 时耗时也稳定在 110ms 左右。

耗时最少,推荐使用第三种。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8685757.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存