读书人

帮忙看一下这个查询如何优化呀

发布时间: 2012-02-17 17:50:42 作者: rapoo

帮忙看一下这个查询怎么优化呀?
ABCD四个字段,如果A符合条件,其他为0,或者A符合条件,B符合条件,其他为0

目前是这样查询的,怎么样可以优化一下呢?

(A=a AND B=0 AND C=0 AND D=0) OR (A=a AND B=b AND C=0 AND D=0) OR (A=a AND B=b AND C=c AND D=0) OR (A=a AND B=b AND C=c AND D=d)

[解决办法]

SQL code
where (A=a and B=0 or A=a and B=b) and C=0 and D=0
[解决办法]
探讨
ABCD四个字段,如果A符合条件,其他为0,或者A符合条件,B符合条件,其他为0

目前是这样查询的,怎么样可以优化一下呢?

(A=a AND B=0 AND C=0 AND D=0) OR (A=a AND B=b AND C=0 AND D=0) OR (A=a AND B=b AND C=c AND D=0) OR (A=a AND B=b AND C=c AND D=d)

[解决办法]
SQL code
WHERE A=A AND (B=0 OR (B=B AND (C=0 OR C=C AND (D=0 OR D=D))))--一级一级提取公因式,虽然这样语句少了,但逻辑很难理解,楼主不要为了优化,把程序弄得难以理解
[解决办法]
直接说你的需求...可能会好点..说不定这个逻辑不是你要的需求哪
[解决办法]
用union all改写

SQL code
select ...where (A=a AND B=0 AND C=0 AND D=0) union allselect ...where (A=a AND B=b AND C=0 AND D=0) union allselect ...where (A=a AND B=b AND C=c AND D=0) union allselect ...where (A=a AND B=b AND C=c AND D=d)
[解决办法]
楼主觉得 (a and b) or c 与 (a or c) and (b or c) 哪一个更优化吗?

读书人网 >SQL Server

热点推荐