gpt4 book ai didi

mysql - 我怎样才能让这个mysql查询更快呢?命令是 killer 吗?极限?

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

SELECT *  FROM table WHERE city LIKE example ORDER by RAND() Limit 10

我正在尝试从表中返回一些随机条目,但它在相当多的页面上被点击,因此可能会导致网站速度变慢。我注释掉查询,一切又恢复正常,所以我知道是这样的,但我想借此机会学习一些有关如何更好地进行查询的知识。

我认为索引可能会有所帮助,但是在这种情况下没有连接的地方似乎没有帮助。谢谢。

最佳答案

您可以通过在table(city)上添加索引来加快速度。

我认为使用 = 而不是 like 查询会更清晰:

SELECT t.* 
FROM table t
WHERE t.city = example
ORDER by RAND()
Limit 10;

根据返回的行数,可能会有进一步的优化。

例如,一种方法是:

SELECT t.* 
FROM (SELECT t.*, RAND() as rnd, (@rn := @rn + 1) as rn
FROM table t CROSS JOIN
(SELECT @rn := 0) params
WHERE t.city = example
) t
WHERE rnd < (100 / @rn) -- get a sample of about 100 records
ORDER BY rnd
LIMIT 10;

这在排序之前使用变量和 WHERE 将行数限制为大约 100 行。这种排序应该相当快。

关于mysql - 我怎样才能让这个mysql查询更快呢?命令是 killer 吗?极限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49990522/

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