运行 10.8.8-MariaDB-log
我对比较网站有一个非常复杂的查询。
本质上
SELECT <columns> FROM <tables>
JOIN <derived table 1 for first comparison>
JOIN <derived table 2 for first comparison>
JOIN <derived table 1 for second comparison>
JOIN <derived table 2 for second comparison>
运行时间 < 0.1 秒
如果我把它改成
SELECT <columns> FROM <tables>
JOIN <derived table 1 for first comparison>
JOIN <derived table 2 for first comparison>
JOIN <derived table 1 for second comparison>
JOIN <derived table 2 for second comparison>
JOIN <derived table 1 for third comparison>
JOIN <derived table 2 for third comparison>
需要10多秒
索引是可靠的,除了 ID 参数值之外,每次比较创建派生表的 sql 都是相同的。唯一改变的是它们的数量。
我怀疑有一些缓冲区/缓存需要增加一点?🤷♂️
是的,我可以完全重写页面/sql,通过一种非常不同的机制来完成它,但如果我可以通过简单的配置更改来解决这个问题,那么考虑到机器上的可用资源,我更愿意这样做。时间很短。
我知道这可能是一个 x/y 问题,但我希望这里有一个容易实现的目标,经验丰富的人能够立即识别出来。
FWIW - 在黑暗中拍摄 - 我尝试将这三个的大小增加四倍,但没有什么区别:
join_buffer_size = 32M (to 128M)
sort_buffer_size = 4M (to 16M)
read_rnd_buffer_size = 4M (to 16M)
谢谢