BETWEEN.IN.性能不应该是这里的决定性因素.话虽如此,BETWEEN似乎在我测试的所有示例中都更快.例如:
没有索引,检查每行有x = 1的一百万行的表:
SELECT COUNT(*) FROM table1 WHERE x IN (1, 2, 3, 4, 5, 6); Time taken: 0.55s SELECT COUNT(*) FROM table1 WHERE x BETWEEN 1 AND 6; Time taken: 0.54s
没有索引,检查具有百万行的表,其中x具有唯一值:
SELECT COUNT(*) FROM table1 WHERE x IN (1, 2, 3, 4, 5, 6); Time taken: 0.65s SELECT COUNT(*) FROM table1 WHERE x BETWEEN 1 AND 6; Time taken: 0.36s
但更实际的例子是id列是唯一的并且已编入索引.执行此操作时,两个查询的性能都会接近即时.
SELECT COUNT(*) FROM table2 WHERE x IN (1, 2, 3, 4, 5, 6); Time taken: 0.00s SELECT COUNT(*) FROM table2 WHERE x BETWEEN 1 AND 6; Time taken: 0.00s
所以我会说集中精力写一个清晰的SQL语句而不是担心执行速度的微小差异.并确保表格被正确编入索引,因为这将产生最大的差异.
注意:测试是在SQL Server Express 2008 R2上执行的.其他系统的结果可能不同.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           2169 次  |  
        
|   最近记录:  |