我有一个疑问是这样的:
SELECT FieldX, FieldY FROM A
WHERE FieldW IN (108, 109, 113, 138, 146, 160,
307, 314, 370, 371, 441, 454 ,457, 458, 479, 480,
485, 488, 490, 492, 519, 523, 525, 534, 539, 543,
546, 547, 550, 564, 573, 629, 642, 643, 649, 650,
651, 694, 698, 699, 761, 762, 768, 772, 773, 774,
775, 778, 784, 843, 844, 848, 851, 852, 853, 854,
855, 856, 857, 858, 859, 860, 861, 862, 863, 864,
865, 868, 869, 871, 872, 873, 891)
有这么多选项的 IN 子句,是否不利于查询性能?我在应用程序中经历了许多超时,我相信这可能是这类问题的根源之一。我是否可以在不删除数字的情况下优化查询,使用任何好的 SQL 提示?
编辑:
@ KM 这些是另一张桌子上的钥匙。这是一个论坛应用程序,简要说明: c # 从数据库获取所有论坛,并将其存储在应用程序缓存中。在 C # 调用获取这些论坛和这个用户的线程的过程之前,考虑到权限和一些业务逻辑,c # 会对“所有论坛”集合进行一些逻辑过滤。超时发生在数据库上,而不是应用程序本身。在查询上执行所有这些逻辑将需要大量的内部连接,而且我不能100% 确定可以在过程中执行所有这些操作。
我用的是 SQLServer2000