Mysql性能介于 - 和vs限制之间

时间:2013-12-31 21:26:03

标签: mysql database-performance

我想知道我正在写的查询的潜在性能问题。有足够多的帖子介于/有时很慢,也限制了慢。我需要引用的列总是包含序列号,因此我可以使用任何一种样式。

我的桌子:

pkey INT, idcol INT, rank INT, datafields....

(idcol,rank)有一个索引。秩从0开始是连续的。它不可能有间隙(或者其他东西被打破)。因此,我有以下两个选项来获取数据:

选项1:

SELECT * FROM tbl WHERE idcol = 1 AND rank BETWEEN 12 AND 15 ORDER BY rank;

选项2:

SELECT * FROM tbl WHERE idcol = 1 AND rank >= 12 ORDER BY rank LIMIT 4;

我猜选项1是最好的,但我不确定...在索引中找到'12'然后获得接下来的3行而不必继续比较排名&lt; = 15?< / p>

2 个答案:

答案 0 :(得分:1)

我会使用选项1:它对以后的更改更加健壮。

速度?尝试explain让MySQL解释其执行策略。尝试大量的虚拟数据和测量。事实上,我认为这里的优化无关紧要。除了索引,这是重点。

此查询更可能与simmilar隔离查询一起发生,可能在更大的查询中。 有可能让数据库做更大的部分。

答案 1 :(得分:1)

我想他们的速度将非常接近同一件事。可能更重要的因素是,当某些东西被破坏时,你希望它如何回应。

你想要一些开始和一些停止之间的所有行,它可能会丢失一些?或者你想要4行,第一行是特定的主键值,它可能会超过你预期的最终值?

性能是一回事,但未来可能会让您免于更大问题的可能是错误处理。如果我是你,我会使用between-and