gpt4 book ai didi

mysql - 尝试为该 SQL 查询找出可能的最佳索引

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

我有一个包含 300,000 行测试数据的表,我正在尝试为这个 select 语句提供一个合适的索引,但是我相信没有什么能非常有效地工作,我可能需要调整我的方法。

x 和 y 可以是 1 到 9 之间的任何值,p 可以是任何高于 x * y 的值(所以 x 为 4 和 y 或 4,等于 16,但它可以是高于该值的任何值,会有没有限制。一个 x 为 1 和 y 为 1 的 p 可能为 1000,或者可能只是 1。另一个 x 为 9 和 y 为 9 可能是 p 为 81,可能是 100,可能是 10000,它没有限制。 )

SELECT `x`, 
`y`
FROM `table`
WHERE `x` <= '9'
AND `y` <= '9'
AND `used` = '0'
ORDER BY `p` DESC
LIMIT 1

我已经创建了一个索引......

x, y, used, price

...这对于特定的 x 和 y 值非常有效,但是当要求一个范围时,这显然需要更多的工作。

谁能找到一种有效的方法来做到这一点?

最佳答案

对于这个查询:

SELECT `x`, `y`
FROM `table`
WHERE `x` <= '9' AND `y` <= '9' AND `used` = '0'
ORDER BY `p` DESC
LIMIT 1;

注意:如果任何值是数字,则去掉单引号以进行比较。在某些情况下,比较字符串和数字会使优化器更难完成工作。

这不是很好的索引。最好的是 (used, x, y, p)。查询仍需要文件排序。一个问题是 where 中的不等式。第二个是 MySQL 没有为索引中的列实现 desc 选项。

关于mysql - 尝试为该 SQL 查询找出可能的最佳索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35970650/

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