SQL語句優化方法

2021-08-15 01:42:58 字數 904 閱讀 1050

1.把資料、日誌、索引放到不同的i/o裝置上,增加讀取速度,以前可以將tempdb應放在raid0上,sql2000不在支援。資料量(尺寸)越大,提高i/o越重要

2.縱向、橫向分割表,減少表的尺寸

3.根據查詢條件,建立索引,優化索引、優化訪問方式,限制結果集的資料量。注意填充因子要適當(最好是使用預設值0)。索引應該盡量小,使用位元組數小的列建索引好(參照索引的建立),不要對有限的幾個值的字段建單一索引如性別字段

4.如果是使用like進行查詢的話,簡單的使用index是不行的,但是全文索引,耗空間。 like 'a%' 使用索引 like '%a' 不使用索引用 like '%a%' 查詢時,查詢耗時和字段值總長度成正比,所以不能用char型別,而是varchar。對於欄位的值很長的建全文索引

5.在查詢select語句中用where字句限制返回的行數,避免表掃瞄,如果返回不必要的資料,浪費了伺服器的i/o資源,加重了網路的負擔降低效能。如果表很大,在表掃瞄的期間將表鎖住,禁止其他的聯接訪問表,後果嚴重

6.sql的注釋申明對執行沒有任何影響

7.注意union和union all 的區別。union all好

8.注意使用distinct,在沒有必要時不要用,它同union一樣會使查詢變慢。重複的記錄在查詢裡是沒有問題的

9.查詢時不要返回不需要的行、列;禁止使有select *

10.用select top 100 / 10 percent 來限制使用者返回的行數或者set rowcount來限制操作的行

11.如果使用了in或者or等時發現查詢沒有走索引,使用顯示申明指定索引:

select * from personmember (index = ix_title) where processid in ('男','女')
12.減少使用子查詢及函式的巢狀

SQL 語句中優化方法

整理一下以前的一些用sql語句的習慣。先提乙個概念掃瞄引數 sarg 用於限制搜尋的乙個操作,因為它通常是指乙個特定的匹配,乙個值得範圍內得匹配或者兩個以上條件的 and 連線。1.or 會引起全表掃瞄.如 name 張三 and 5000 符合sarg 而 name zhangsan or 500...

SQL語句常見優化方法

在查詢語句前使用explain關鍵字 變體 explain extended select show warnings 檢視優化後的語句 方式一 select from a join b using 兩張表有相同的字段 方式二 select from a join b on 同 select fro...

SQL 語句優化 OR 語句優化案例

從上海來到溫州,看了前幾天監控的sql語句和資料變化,發現有一條語句的io次數很大,達到了150萬次io,而兩個表的資料也就不到20萬,為何有如此多的io次數,下面是執行語句 select ws.nodeid,wi.laststepid,wi.curstepid from workflowinfo ...