對於使用 UNIKON ALL 中表的順序

2022-01-24 00:01:55 字數 892 閱讀 6615

對於使用 unikon all (或 union, 如果不特別關注是否有重複資料, 應該使用union all) 的查詢

請注意 union all 中表的順序

-- 這個查詢中的tb1, tb2 ,應該按照資料量大小倒排序,資料量最大的表,應該出現在最前面

select * from tb1 with(nolock)

union all

select * from tb2 with(nolock)

henson 這國的乙個專案, 查詢效率低, 就是因為表的順序有問題,因為欄位上的設定有差異, 在相同的優先組下, 會以前面的表結構為標準來做轉換,由於大資料量的表放在後面,導致被轉換的是大表, 從而產生了額外的效能開銷

另外,過於複雜的查詢, 不要追求一句搞定, 適當考慮把重複使用的查詢先存到臨時表, 降低查詢的複雜程度, 並且通過分步驟+判斷來減少查詢物件, 會對效能有幫助

henson這邊之前優化的查詢就有這種問題, 乙個查詢要翻幾頁才看得完, 涉及的物件多, 還巢狀複雜的檢視, 這種人看著累,sql要分析出這個查詢也是很累的

一句查詢是告訴 sql 最終想要的結果, 給 sql 更多發揮的空間;但過於複雜的一句,可達到目標的方案就會非常多,sql 就無法評估全部的方案,所以其最終決定的執行的方案就不一定是最優的;另外,sql在評估方案的時候,其中乙個重要的資訊就是表中的資料分布,這是乙個大概統計值,當要評估的東西多的時候,這個大概的結果累計所評估的結果與實際結果的差異就可能會非常大,這也會導致查詢方案有問題。當然,也不要過於干涉

當然,必須注意的是,也不要太過於注重把語句分解為多步+臨時表去做,那樣sql可發揮的空間低,效能可能也會變得不好。如果把握,沒有乙個準確的尺度,但如果乙個查詢分翻幾頁才能看完的話,我想就應該是有問題了.

出處:jack zou

對於儲存過程中表名是變數的游標使用

begin in date to char sysdate 1,yyyy mm dd y date to char sysdate 1,yyyymmdd t date to char sysdate,yyyymmdd stat time in date 00 00 00 end time in da...

html中表單使用總結

html中表單使用總結 1.表單的標準格式 其中method的值可以使get或者是post 區別在於get請求時,資料大小不能超過2k,同時請求的內容會出現在位址列上。post請求時,一般請求資料不能超過8m 但是可以通過設定加大。同時請求引數放在主體中,不會被看到。隱蔽性好。action是請求的u...

Django中表單Form的使用

在django中對表單form的定義涉及三個檔案 1 model.py 定義form對應到資料庫中的表,如 from django.db import models create your models here.from django.db import models class student ...