由于OR语句会引起全表扫描,所以在很多时候OR将大大降低查询速度。在这种情况下就可以使用Union来替代OR实现“或”查询。
原句:
SELECT[ID]
,[UserID]
,[Realname]
,[Sex]
,[Age]
,[Stature]
,[Nation]
,[Nativeplace]
,[Marry]
,[Jobkind]
,[Workexp]
,[QQ]
,[Tel]
,[MobilePhone]
,[Province]
,[Area]
,[City]
,[HopePay]
,[HopeCalling]
,[HopeMetier]
,[CanWorkTime]
,[Culture]
,[School]
,[Specialty]
,[Address]
,[Abode]
,[Email]
,[Description]
,[Hits]
,[Secrecy]
,[AddDateTime]
,[ReflashTime]
,[IsTop]
,[CurrState]
,[InBase]
FROM[SoXuData].[dbo].[tbJob_Resume]WHERESpecialty='计算机'ORCulture='大专'
使用Union的语句:
SELECT[ID]
,[UserID]
,[Realname]
,[Sex]
,[Age]
,[Stature]
,[Nation]
,[Nativeplace]
,[Marry]
,[Jobkind]
,[Workexp]
,[QQ]
,[Tel]
,[MobilePhone]
,[Province]
,[Area]
,[City]
,[HopePay]
,[HopeCalling]
,[HopeMetier]
,[CanWorkTime]
,[Culture]
,[School]
,[Specialty]
,[Address]
,[Abode]
,[Email]
,[Description]
,[Hits]
,[Secrecy]
,[AddDateTime]
,[ReflashTime]
,[IsTop]
,[CurrState]
,[InBase]
FROM[SoXuData].[dbo].[tbJob_Resume]WHERESpecialty='计算机'
Union
SELECT[ID]
,[UserID]
,[Realname]
,[Sex]
,[Age]
,[Stature]
,[Nation]
,[Nativeplace]
,[Marry]
,[Jobkind]
,[Workexp]
,[QQ]
,[Tel]
,[MobilePhone]
,[Province]
,[Area]
,[City]
,[HopePay]
,[HopeCalling]
,[HopeMetier]
,[CanWorkTime]
,[Culture]
,[School]
,[Specialty]
,[Address]
,[Abode]
,[Email]
,[Description]
,[Hits]
,[Secrecy]
,[AddDateTime]
,[ReflashTime]
,[IsTop]
,[CurrState]
,[InBase]
FROM[SoXuData].[dbo].[tbJob_Resume]WHERECulture='大专'
但是不是什么时候都适合这样做,如果“或”条件的是相同字段则使用OR语句效率要比较高,原因未明,有空再查资料