資料查詢的例子

2021-06-16 01:01:59 字數 2076 閱讀 2297

經常可以遇到這種情況:用不同的sql寫法可以達到同樣的目的。愛鑽牛角尖的人就想搞明白,誠然結果一樣,但到底孰優孰劣?下面是我列出的一些,請兄弟們賜教。也請兄弟們將你們遇到的類似問題一併列出。

.(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')

_________________________________

上面兩種方法,哪種方法效率高?

(2)賦值時:

select @a=n'aa'

set @a=n'aa'

_________________________________

上面兩種方法,哪種方法效率高?

(3)取前幾條資料時

set rowcount 2 select * from tb order by fd

select top 2 * from tb order by fd

_________________________________

上面兩種方法,哪種方法效率高?

(4)條件判斷時

where 0<(select count(*) from tb where ……)

where exists(select * from tb where ……) 

_________________________________

上面兩種方法,哪種方法效率高?

(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的區別?

(8)intersect和union的區別?

下面是鄒老大的回答:

(1)一次插入多條資料時:

第1種好一些, 但也得有個, 因為第1種的union all是做為乙個語句整體, 查詢優化器會嘗試做優化, 同時, 也要先算出這個結果再插入的.

2. 如果是單個賦值, 沒有什麼好比較的話.

不過, 如果是為多個變數賦值, 我測試過, select 一次性賦值, 比用set 逐個賦值效率好.

3. set rowcount和top 是一樣的, 包括執行的計畫等都是一樣的

4. 這個一般是exists快, 當然, 具體還要看你後面的子查詢的條件, 是否會引用外層查詢中的物件的列.

exists檢查到有值就返回, 而且不返回結果集, count需要統計出所有滿足條件的, 再返回乙個結果集, 所以一般情況下exists快.

5. 應該是一樣的

6. 基本上是一樣的

7. except會去重複, not in 不會(除非你在select中顯式指定)

except用於比較的列是所有列, 除非寫子查詢限制列, not in 沒有這種情況

8. intersect是兩個查詢都有的非重複值(交集), union是兩個查詢結果的所有不重複值(並集)

nodejs mysql 資料查詢例子

1 安裝nodejs 2 安裝mysql npm包 npm install mysql 3 相應api檢視及呼叫 var mysql require mysql var connection mysql.createconnection connection.connect connection.q...

jmeter根據查詢資料查詢結果

前兩天試了 一下根據請求查詢出的userid,查詢該userid的資訊。1.新建 1 新建執行緒組 2 新建http請求預設值 3 新建http cookie管理器 4 新建http資訊頭管理器 5 新建登入請求,並新增正規表示式獲取token 2.迴圈控制器 1 新增迴圈控制器,設定迴圈次數 2 ...

簡單的資料查詢

簡單的資料查詢 簡單的查詢語句 select from 投影操作 seleact 列1,列2 from 表名 列名列表幾種書寫方式 1.如果我們選擇某個表中的多個列,那麼列名之間用逗號分隔開 2.如果是單個列,只需要列出該列的列名即可 3.如果選擇所有的列,可以簡單的用 號帶代替列名列表。如何查詢 ...