select 1 from 是什么意思?有什么作用?


參考:https://www.douban.com/note/518373959/

一、select 1 from 的作用

1、select 1 from mytable 與 select anycol(目的表集合中的任意一行)from mytable、select * from mytable 作用上來說是沒有差別的,都是查看是否有記錄。  --雖然說沒有區別,但還是好奇到底為什么用select 1 from

2、select 1 from 中的1是一常量,查到的所有行的值都是它,但從效率上來說,1>anycol>*,因為不用查字典表。 --這里所說的查到滿足篩選條件的記錄,會生成一個臨時列,而且值是1,這里有個性能點,就是執行效率1>anycol>*,執行效率是最快的;有數據就返回1,沒數據返回null

3、查看記錄條數可以用select sum(1) from mytable;等價於select sum(*) from mytable。

4、例如select top 1 1 from mytable 用來判斷表是否有記錄,如有記錄則顯示一個 1,沒有則不顯示。

 

 

二、什么時候適用?

一般用來當做判斷子查詢是否成功(即是否有滿足條件的時候使用),常用於exists,子查詢中,

比如
select * from ta where  exists (select 1 from ta.id = tb.id)
這個判斷就是(select 1 from ta.id = tb.id)這個查詢如果有返回值的話表示當前查詢滿足條件,一般來說就簡單話的用select 1

 

這種查詢寫法,在性能調優的時候,可能會經常用到,執行效率比較快。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM