我给你来自慢查询日志的样本。
mysql 版本:5.6.14, 8GB 服务器 6GB 可用内存, innodb 表
例如:当我在 phpmyadmin 中键入此查询时,id 是主键非常快,但它仍在我的慢速查询日志中
# Query_time: 3.226675 Lock_time: 0.000046 Rows_sent: 0 Rows_examined: 1
SET timestamp=1385980918;
update `rsslists` set `lastTimeRead` = '1385980913', `total` = '66502', `quality` = '0.028284863613124' where `id` = '146';
或这个查询:
# Query_time: 2.284815 Lock_time: 0.000047 Rows_sent: 0 Rows_examined: 0
SET timestamp=1385980935;
select * from `articles` where `guid` = '1.2180130' limit 1;
解释:
'guid' 是索引 非常简单的查询我不知道为什么他们有时会花这么长时间
最佳答案
按照以下要点来优化查询。
- 针对查询缓存优化查询
- 解释您的 SELECT 查询
- 获取唯一行时限制 1
- 索引搜索字段
- 索引并使用相同的列类型进行联接
- 不要按 RAND() 排序
- 避免选择*
- 几乎总是有一个 id 字段
- 使用 ENUM 而不是 VARCHAR
- 使用 PROCEDURE ANALYSE() 获取建议
- 尽可能使用 NOT NULL
- 准备好的陈述
- 无缓冲查询
- 将 IP 地址存储为 UNSIGNED INT
- 固定长度(静态)表更快
- 垂直分区
- 拆分大的 DELETE 或 INSERT 查询
- 越小的列越快
- 选择合适的存储引擎
- 使用对象关系映射器
- 小心持久连接
有关更多详细信息,请参阅 this
关于php - mysql 真的很简单的查询花了很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20326464/