SQL各種寫法的效率問題

來源:互聯網
上載者:User

問:
(1)一次插入多條資料時:
CREATE TABLE tb(ID int, 名稱 NVARCHAR(30), 備忘 NVARCHAR(1000))
INSERT tb  SELECT 1,'DDD',1
UNION ALL        SELECT 1,'5100','D'
UNION ALL        SELECT 1,'5200','E'
也可以這樣:
CREATE TABLE tb1(ID int, 名稱 NVARCHAR(30), 備忘 NVARCHAR(1000))
INSERT TB1 (ID,名稱,備忘)VALUES(1,'DDD',1)
INSERT TB1 (ID,名稱,備忘)VALUES(1,'5100','D')
INSERT TB1 (ID,名稱,備忘)VALUES(1,'5200','E')
_________________________________
上面兩種方法,哪種方法效率高?
答:
第1種好一些, 但也得有個量的控制, 因為第1種的union all是作為一個語句整體, 查詢最佳化工具會嘗試做最佳化, 同時, 也要先算出這個結果再插入的.
問:
(2)賦值時:
SELECT @a=N'aa'
SET @a=N'aa'
_________________________________
上面兩種方法,哪種方法效率高?
答:
如果是單個賦值, 沒有什麼好比較的話.
不過, 如果是為多個變數賦值, 經測試, SELECT 一次性賦值, 比用SET 逐個賦值效率好..
問:
(3)取前幾條資料時
set ROWCOUNT 2 select * from tb order by fd
select Top 2 * from tb order by fd
_________________________________
上面兩種方法,哪種方法效率高?
答:
SET ROWCOUNT和TOP 是一樣的, 包括執行的計劃等都是一樣的
問:
(4)條件判斷時
where 0<(select count(*) from tb where ……)
where exists(select * from tb where ……)
_________________________________
上面兩種方法,哪種方法效率高?
答:
這個一般是exists快, 當然, 具體還要看你後面的子查詢的條件, 是否會引用外層查詢中的對象的列.
exists檢查到有值就返回, 而且不返回結果集, count需要統計出所有滿足條件的, 再返回一個結果集, 所以一般情況下exists快.
問:
(5)NULLIF的使用----->同理它的反函數ISNULL的使用
update tb set fd=case when fd=1 then null else fd end
update tb set fd=nullif(fd,1)
_________________________________
上面兩種方法,哪種方法效率高?
答:
應該是一樣的
問:
6)從字串中取子字串時
substring('abcdefg',1,3)
left('abcderg',3)_
________________________________
上面兩種方法,哪種方法效率高?
答:
基本上是一樣的
問:
(7)EXCEPT和Not in的區別?
答:
except會去重複, not in 不會(除非你在select中顯式指定)
except用於比較的列是所有列, 除非寫子查詢限制列, not in 沒有這種情況
問:
(8)INTERSECT和UNION的區別?
答:
intersect是兩個查詢都有的非重複值(交集), union是兩個查詢結果的所有不重複值(並集)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.