php - mysql 真的很简单的查询花了很长时间

标签 php mysql laravel-4 mysql-5.6

我给你来自慢查询日志的样本。

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;

解释: explain

'guid' 是索引 非常简单的查询我不知道为什么他们有时会花这么长时间

最佳答案

按照以下要点来优化查询。

  1. 针对查询缓存优化查询
  2. 解释您的 SELECT 查询
  3. 获取唯一行时限制 1
  4. 索引搜索字段
  5. 索引并使用相同的列类型进行联接
  6. 不要按 RAND() 排序
  7. 避免选择*
  8. 几乎总是有一个 id 字段
  9. 使用 ENUM 而不是 VARCHAR
  10. 使用 PROCEDURE ANALYSE() 获取建议
  11. 尽可能使用 NOT NULL
  12. 准备好的陈述
  13. 无缓冲查询
  14. 将 IP 地址存储为 UNSIGNED INT
  15. 固定长度(静态)表更快
  16. 垂直分区
  17. 拆分大的 DELETE 或 INSERT 查询
  18. 越小的列越快
  19. 选择合适的存储引擎
  20. 使用对象关系映射器
  21. 小心持久连接

有关更多详细信息,请参阅 this

关于php - mysql 真的很简单的查询花了很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20326464/

相关文章:

php - 在 Laravel Carbon 中按月执行分组时出现时区未找到错误

c# - 我可以将变量从 php 获取到我的 Windows 窗体吗?

php - 如何改进多表SELECT查询?

mysql - 如何在SQL中选择需要的信息?

laravel-4 - Laravel 4 仅在生产中显示自定义错误页面

php - 如何在同一行显示 Laravel artisan 命令输出?

php - 我如何使用带 SSL 的 PHP

php - mysql 连接问题

php - Laravel attach() 方法不适用于 hasMany 端

php - 临时 header 仅针对我的 IP 地址显示