SQL語句優化的原則

2021-04-17 15:14:55 字數 1523 閱讀 3687

sql語句優化的原則:

***************===

1、使用索引來更快地遍歷表。

預設情況下建立的索引是非群集索引,但有時它並不是最佳的。在非群集索引

下,資料在物理上隨機存放在資料頁上。合理的索引設計要建立在

對各種查詢的分析和**上。一般來說:①.有大量重複值、且經常有範圍查詢

(between

, >

, <

,>=,

<

=)和order by、

group

by發生的列,可考

慮建立群集索引;②.經常同時訪問多列,且每列都含有重複值可考慮建立組合索引

;③.組合索引要盡量使關鍵查詢形成索引覆蓋,其前導列一定

是使用最頻繁的列。索引雖有助於提高效能但不是索引越多越好,恰好相反過多的索

引會導致系統低效。使用者在表中每加進乙個索引,維護索引集

合就要做相應的更新工作。 2、

isnull

與 is

notnull

不能用null作索引,任何包含null值的列都將不會被包含在索引中。即使索引有

多列這樣的情況下,只要這些列中有一列含有null,該列就會從

索引中排除。也就是說如果某列存在空值,即使對該列建索引也不會提高效能。任何

在where子句中使用is null或is

notnull的語句優化器是不允

許使用索引的。

3、in和exists

exists要遠比in的效率高。裡面關係到full

table

scan和range scan。幾乎將所

有的in操作符子查詢改寫為使用exists的子查詢。

4、在海量查詢時盡量少用格式轉換。

5、當在sql server 2000中,如果儲存過程只有乙個引數,並且是output型別的,必

須在呼叫這個儲存過程的時候給這個引數乙個初始的值,否則

會出現呼叫錯誤。 6、

order

by和gropu

by使用order by和group by短語,任何一種索引都有助於select的效能提高。注意

如果索引列裡面有null值,optimizer將無法優化。

7、任何對列的操作都將導致表掃瞄,它包括資料庫函式、計算表示式等等,查詢時

要盡可能將操作移至等號右邊。 8、

in、or子句常會使用工作表,使索引失效。如果不產生大量重複值,可以考慮把

子句拆開。拆開的子句中應該包含索引。 9、

setshowplan_all

on檢視執行方案。dbcc檢查資料庫資料完整性。

dbcc

(database

consistency checker)是一組用於驗證 sql server 資料

庫完整性的程式。

10、慎用游標

在某些必須使用游標的場合,可考慮將符合條件的資料行轉入臨時表中,再對臨

時表定義游標進行操作,這樣可使效能得到明顯提高。

mysql 常用sql語句優化原則

優化索引mysql 中用到索引的的場景 索引的使用原則 符合左字首原則 索引上不要使用函式和進行運算,另外型別也要對應 比如 where name abc 雖然sql不會報錯,但是會導致索引失效 使用 or 時,如果存在沒有在索引上的列,也會導致索引失效 如果 mysql 分析使用索引必沒有使用索引...

mysql語句優化原則 MySQL語句優化的原則

1 使用索引來更快地遍歷表。預設情況下建立的索引是非群集索引,但有時它並不是最佳的。在非群集索引下,資料在物理上隨機存放在資料頁上。合理的索引設計要建立在對各種查詢的分析和 上。一般來說 a.有大量重複值 且經常有範圍查詢 和order by group by發生的列,可考慮建立群集索引 b.經常同...

mysql語句優化原則 mysql語句優化原則

有時候發現資料量大的時候查詢起來效率就比較慢了,學習一下mysql語句優化的原則,自己在正常寫sql的時候還沒注意到這些,先記錄下來,慢慢一點一點的學,加油!這幾篇部落格寫的都可以 使用索引的原則 1.最左字首匹配原則。mysql會一直向右匹配直到遇到範圍查詢 不會用到b的索引 where a 1 ...