-1
我有一个SQL查询可以有大约1.5k的OR或以下列形式的OR。他们是我拥有的人员的ID,他们可以单独选择,因此在选择每个人时都有许多OR。它是更好地只是选择每个人的ID,然后把它放在和条件,UNION,而不是OR,或者使用IN聚成一团所有ID,因为用户可以选择每个人都接受1人。谢谢。在许多OR情况下改善sql查询
...
AND (
(UserID = '53b95690-22d8-44a2-ad56-919cb4037218')
OR (UserID = '87b7fc0c-28f4-4f2e-9909-066df42245fa')
OR (UserID = '98c1b5e3-6ba5-4bd9-b8f5-d3b2221e3e3a')
OR...
编辑:完整的查询,如要求;
SELECT *
FROM Mail WITH (NOLOCK)
WHERE Active= 1
AND Company= '1d034e8b-0122-4531-8795-895d9287920f'
AND (
CompanyDivisionID= '129bcca1-b1d8-4a9e-8152-0b9e936c9d01'
OR CompanyDivisionID= '1bf4023d-22a3-4520-b751-7842576f42b7'
)
AND (
(DestinationUserID = '53b95690-22d8-44a2-ad56-919cb4037218')
OR (DestinationUserID = '87b7fc0c-28f4-4f2e-9909-066df42245fa')
OR (DestinationUserID = '98c1b5e3-6ba5-4bd9-b8f5-d3b2221e3e3a')
...
...
...
OR (DestinationUserID = '8c78fc05-7969-48fd-9b30-774e5d9a70bd')
OR (DestinationUserID = 'e7b76096-fe7d-44b8-9158-8293ac609471')
OR (DestinationUserID = '8a6b7385-4339-43fb-b95b-a7b687982bcd')
)
ORDER BY SendingDate DESC
'IN'由优化器转换为'OR',所以不会有任何区别。你在使用参数吗?这个选择有什么用途? – NickyvV
我可以有一堆用户ID(Guid)作为参数,具体取决于用户选择哪一个。我最近发现他们有时会选择所有,这就造成了这种情况。 – mechanicum
@mechanicum:你能显示完整的查询吗? – Arion