我有这个查询
SELECT id, alias, parent FROM `content`
有没有办法优化此查询,以便'键入'不同于所有'
id - 主要,唯一
id - index
父母 - 指数
别名 - 索引
...
请注意,此查询几乎不会返回超过1500行。
谢谢
答案 0 :(得分:0)
您的查询正在获取所有行,因此根据定义,它将报告" ALL"作为EXPLAIN报告中的查询类型。唯一的另一种可能性是"指数"查询类型,索引扫描,它访问索引中的每个条目。但这与桌面扫描的成本几乎相同。
有一种说法是,最快的SQL查询是您根本不运行的查询,因为您可以通过其他方式获取数据。
例如,如果数据位于某种类型的缓存中。如果您的数据不超过1500行,并且它不经常更改,则它可能是放入内存的良好候选者。然后,只有在缺少缓存数据时才运行SQL查询。
有几个常见的选择:
MySQL query cache是MySQL服务器中维护的内存缓存,当表中的数据发生变化时会自动清除。
Memcached是一种流行的内存中键值存储,也常用于使用MySQL的应用程序。它非常快。另一个选项是Redis,它类似但也受磁盘存储支持。
答案 1 :(得分:0)
转动OFF
log_queries_not_using_indexes
;它像你得到的那样用红色鲱鱼弄乱慢慢的日志。
0.00XX
秒 - 足够好,不用担心。
ALL
实际上最适合从表的“所有”行中提取多个列。