假设我有一个表,该表的列的取值范围是1到10。我需要选择除9和10以外的所有值的列。使用此查询时是否会有区别(在性能方面):
SELECT * FROM tbl WHERE col NOT IN (9, 10)
和这个?
SELECT * FROM tbl WHERE col IN (1, 2, 3, 4, 5, 6, 7, 8)
当涉及到性能,你应该总是分析代码(即运行查询数千次,并使用某种测量每个回路的性能stopwatch。样品)。
stopwatch
但是在这里,我强烈建议您使用第一个查询来更好地维护将来。逻辑是您需要除9和10之外的所有记录。如果将值11添加到表中并使用第二个查询,则应用程序的逻辑将被破坏,这当然会导致错误。
编辑: 我记得这被标记为php,这就是为什么我在php中提供了示例,但我可能会误会。我想用您使用的语言来重写该示例并不难。