gpt4 book ai didi

php - 优化 MySQL 查询

转载 作者:行者123 更新时间:2023-11-29 03:11:39 25 4
gpt4 key购买 nike

我有以下 MySQL 查询

SELECT e.id, IF(c.id = 1, g.url, e.url) AS url, IF(s.id = 4, c.short, s.name) AS sub, e.title, b.name AS category
FROM g, c, e, b, s
WHERE e.category = b.id
AND e.subcategory = s.id
AND g.c = c.id
AND (g.g = e.id OR s.id != 4)
AND e.`release` < UNIX_TIMESTAMP()
GROUP BY e.id
ORDER BY e.`release` DESC
LIMIT 15

这大约用了 2.5 秒。但是如果我删除 GROUP BY,大约需要 1.8 秒。如果我删除 ORDER BY,则需要 2.3 秒。但是,如果我删除 GROUP BY 和 ORDER BY,大约需要 0.005 秒(但随后会有很多重复行)。

我应该怎么做才能用更快的时间获得相同的结果?

这里是查询的解释,如果有帮助的话。

id  select_type     table   type    possible_keys   key     key_len     ref  rows   Extra
1 SIMPLE c ALL PRIMARY NULL NULL NULL 26 Using temporary; Using filesort
1 SIMPLE g ref console console 4 int41988_leveli.consoles.id 60
1 SIMPLE e ALL PRIMARY,id NULL NULL NULL 208 Using where; Using join buffer
1 SIMPLE b eq_ref PRIMARY PRIMARY 4 e.cat 1
1 SIMPLE s eq_ref PRIMARY PRIMARY 4 e.subcategory 1

编辑:

这里是已经存在的索引。

c.id PRIMARY KEY
b.id PRIMARY KEY
e.id PRIMARY KEY
s.id PRIMARY KEY
g.id PRIMARY KEY
g.url AND g.console UNIQUE INDEX

最佳答案

尝试在两个字段上使用单一索引:e.id 和 e.release。或者每个字段一个索引:e.id 和 e.resourse,但我怀疑它是否有用。

关于php - 优化 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7209079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com