[英]Performance: WHERE IN clause vs (INSERT + INNER JOIN)
我有一个用例,需要执行大量的SELECT SQL
目前,我有两种方法:
通过标识符列表进行查询。 因此,我首先使用了WHERE IN子句:
我可以创建一个表,比如说CACHE_TABLE,然后首先将一个唯一的标识符(1,2,3,8,11,78,59,65,74,25,36,54558,78854,558)插入其中键CACHEID并将此CACHE_TABLE与MAIN_TABLE联接以获得所需结果:
在我的用例中,性能确实至关重要。 所以我想知道方法2是否会比方法1产生更好的性能。 另外,如果有更好的替代方法
在此先感谢一吨!
您的答案是最佳性能方法2。 以我的经验,IN是一个非常慢的运算符,因为SQL通常将其评估为一系列由“ OR”(WHERE x = Y OR x = Z OR ...)分隔的WHERE子句。 与ALL THINGS SQL一样,您的里程可能会有所不同。 速度将在很大程度上取决于索引
您需要测试这两种方法。
对于单个查询,我希望in
大多数情况下都会取胜-仅仅因为创建表然后使用它需要多次往返数据库。
此外,某些数据库还优化了常量列表(例如,MySQL对值进行二进制搜索,而不是顺序搜索)。
可以帮助任一版本的一件事是(col1)
或(col1, col2, col3, col4)
上的索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.