mysql – LIMIT 1如何可能使查询变慢
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – LIMIT 1如何可能使查询变慢,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含961字,纯文字阅读大概需要2分钟。
内容图文
![mysql – LIMIT 1如何可能使查询变慢](/upload/InfoBanner/zyjiaocheng/902/f1d4fb71cb034c6d9e5eaaef2aef6cce.jpg)
鉴于MySQL 5.6中的这个表:
create table PlayerSession
(
id bigint auto_increment primary key,
lastActivity datetime not null,
player_id bigint null,
...
constraint FK4410E05525A98981
foreign key (player_id) references Player (id)
)
怎么可能这个查询立即返回大约2000行:
SELECT * FROM PlayerSession
WHERE player_id = ....
ORDER BY lastActivity DESC
但添加LIMIT 1需要4秒,即使应该做的只是选择第一个结果?
使用EXPLAIN我发现唯一的区别是没有限制,使用filesort.从我收集的内容来看,这应该让它变慢,而不是更快.整个表包含大约2M行.
此外,添加LIMIT 3或任何高于此值的东西,可以提供与无限制相同的性能.
是的,我已经创建了一个关于playerId,lastActivity的索引,令人惊讶的是,它让它再次变得快速.虽然这会使情况立即受到压力(服务器过载),但它并没有真正解释这个谜团.
解决方法:
5.6的具体版本是什么?请提供EXPLAIN FORMAT = JSON SELECT ….请提供SHOW CREATE TABLE;我们需要查看其他索引以及数据类型.
INDEX(playerId,lastActivity)允许查询避免“filesort”.
奇怪时间的一个可能原因可能是缓存.运行每个查询两次以避免打嗝.
内容总结
以上是互联网集市为您收集整理的mysql – LIMIT 1如何可能使查询变慢全部内容,希望文章能够帮你解决mysql – LIMIT 1如何可能使查询变慢所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。