1

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

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' 是索引非常简单的查询我不知道为什么他们有时要花这么长时间

4

2 回答 2

1

按照以下关键点优化查询。

  1. 优化查询缓存的查询
  2. 解释您的 SELECT 查询
  3. LIMIT 1 获得唯一行时
  4. 索引搜索字段
  5. 为连接建立索引并使用相同的列类型
  6. 请勿按 RAND() 订购
  7. 避免选择 *
  8. 几乎总是有一个 id 字段
  9. 在 VARCHAR 上使用 ENUM
  10. 使用 PROCEDURE ANALYSE() 获取建议
  11. 如果可以,请使用 NOT NULL
  12. 准备好的报表
  13. 无缓冲查询
  14. 将 IP 地址存储为 UNSIGNED INT
  15. 固定长度(静态)表更快
  16. 垂直分区
  17. 拆分 Big DELETE 或 INSERT 查询
  18. 较小的列速度更快
  19. 选择合适的存储引擎
  20. 使用对象关系映射器
  21. 小心持久连接

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

于 2013-12-02T11:20:23.247 回答
0

如果这些表很大并且有多个索引,那么插入可能会很慢。您应该记录所有查询并查看其他插入的执行情况。

至于select,guid上应该有索引,否则如果是大表会很慢。

于 2013-12-02T10:54:59.960 回答