MySQL查询优化
1. COUNT与LIMIT
COUNT(*) 计算满足条件的记录行数,COUNT(col)计算满足条件的且col非空的记录行数
LIMTI n 在满足条件的记录中查询n条,发现n条后停止扫描
需要判断记录是否存在时可以用LIMIT取代COUNT,LIMIT 1 找到记录就会停止
mysql> select count(id) from test where tkey='1pNEFf3mudsuVYVxK0AMZs9cqnpJkf5y' \G
*************************** 1. row ***************************
count(id): 1
1 row in set (1.92 sec)
mysql> select id from test where tkey='1pNEFf3mudsuVYVxK0AMZs9cqnpJkf5y' limit 1 \G
*************************** 1. row ***************************
id: 1500000
1 row in set (0.85 sec)
mysql> select exists(select id from test where tkey='1pNEFf3mudsuVYVxK0AMZs9cqnpJkf5y') \G
*************************** 1. row ***************************
exists(select id from test where tkey='1pNEFf3mudsuVYVxK0AMZs9cqnpJkf5y'): 1
1 row in set (0.85 sec)
2.ORDER BY RAND()
随机取数据时使用ORDER BY RAND()效率极低,可以使用其它方式来实现,如取随机数交给程序或者函数去做,或者使用RAND()随机取一条再UNION也会比RAND()快很多
数据量大时该方法速度极其慢
mysql> select * from test where id < 2000000 order by rand() limit 1 \G
*************************** 1. row ***************************
id: 1145236
tname: bSCkE5j9DASrqENRN
tstat: 0
tkey: tDAPfzXUyRvK3T9SOfElE0YFe2icZaGN
tsort: 59.42
sid: 2
created_ts: 2011-12-15 11:59:52
1 row in set (1 min 37.10 sec)
拷贝网络上他人SQL 随机取一条记录, 速度挺快.
mysql> SELECT *
-> FROM `test` AS t1 JOIN ( SELECT ROUND ( RAND () * (( SELECT MAX( id ) FROM `test` ) - ( SELECT MIN( id ) FROM `test`))
-> + ( SELECT MIN( id ) FROM `test` )) AS id ) AS t2
-> WHERE t1 . id >= t2 . id
-> ORDER BY t1 . id LIMIT 1 \G
*************************** 1. row ***************************
id: 3248895
tname: ujVxM89euDxEtdyVO97YoRX5moHa
tstat: 2
tkey: ixEvojbRAd9XbQy3rV8J7fGxvIS8QFF8
tsort: 37.81
sid: 5
created_ts: 2011-12-15 15:31:47
id: 3248895
1 row in set (0.03 sec)
posted on 2011-12-15 17:20 BobbyPeng 阅读(1449) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?