1.對查詢進行優化,要盡量避免全表掃瞄,首先應考慮在where 及 order by 涉及的列上建立索引。
2.應盡量避免在 where 子句中對字段進行 null
值判斷,否
則將導致引擎放棄使用索引而進行全表掃瞄,如:
select id from t where num is
null
最好不要給資料庫留null,盡可能的使用 not null填充資料庫.
不要以為 null 不需要空間,比如:
char(100) 型,在字段建立時,
空間就固定了, 不管是否插入值(null也包含在內),都是占用 100個字
符的空間的,如果是varchar這樣的變長字段,
null
不占用空間。
3.應盡量避免在 where 子句中使用 != 或 <>
操作符,否則將引擎放棄使用索
引而進行全表掃瞄。
4.應盡量避免在 where 子句中使用 or 來連線條件,如果乙個欄位有索引,一
個字段沒有索引,將導致引擎放棄使用索引而進行全表掃瞄,如:
select id from t where num=10 or name = 'admin'可以這樣查詢:
select id from t where num = 10 union all select id from t where name = 'admin'
5.in 和 not in 也要慎用,否則會導致全表掃瞄,如:
select id from t where num in(1,2,3)
對於連續的數值,能用 between 就不要用 in 了:
select id from t where num between 1 and 3【between a and b 包含a、b】
很多時候用 exists 代替 in 是乙個好的選擇:
select * from a where aid in(select bid from b where bid=a.aid)
用下面的語句替換:
select * from a where exists(select bid from b where bid=a.aid)
exists()會執行a.length次,它並不快取exists()結果集,因為exists()結果集
的內容並不重要,重要的是結果集中是否有記錄,如果有則返回true,沒有則返回false.
6.下面的查詢使用了 like 也將導致全表掃瞄:
select id from t where name like 『%abc%』
如果提高效率,可以使用全文索引fulltext index
7.應盡量避免在 where 子句中對字段進行表示式操作,這將導致引擎放棄使用索引而進行全表掃瞄。
不要在 where 子句中的「=」左邊進行函式、算術運算或其他表示式運算,否則系統將可能無法正確使用索引。如:
select id from t where num/2 = 100應改為:
select id from t where num = 100*2
8.應盡量避免在where子句中對字段進行函式操作,這將導致引擎放棄使用索引而進行全表掃瞄。
9.在使用索引字段作為條件時,如果該索引是復合索引,那麼必須使用到該索引中的第乙個字
段作為條件時才能保證系統使用該索引,否則該索引將不會被使用,並且應盡可能的讓字
段順序與索引順序相一致。
【組合索引的最左字首原則】
select ....from...where (name、age、city作為限定條件時)
例如組合索引(name,age,city),
能是索引起作用的是 name、age/name、city/name/age/city
age和city的組合不能使索引起作用
16.索引並不是越多越好,索引固然可以提高相應的 select 的效率,但同時也降低了 insert
及 update 的效率,因為 insert 或 update 時有可能會重建索引,所以怎樣建索引需要
慎重考慮,視具體情況而定。乙個表的索引數最好不要超過6個,若太多則應考慮一些不常
使用到的列上建的索引是否有必要。
建立了索引,索引的檔案會占用資料庫的物理空間,資料庫表中的資料占用的資料空間
建立了索引,資料量越大,索引檔案越大,影響效率;索引的維護也會更花時間
sql優化,資料庫優化
1.sql的執行順序 from 表名 where 條件 執行順序是從後往前,where條件後面的語句盡可能縮短where 資料執行的範圍。先group by 後order by select 查詢 2.避免過多的聯查,設計合理的表關係 3.遵守常見sql規範,盡可能減少 4.如果表字段過多,經常展示...
sql優化 資料庫優化
資料庫優化 資料庫優化吧我覺應該從硬碟 記憶體和網路頻寬考慮,提高硬碟的讀寫速度,增大頻寬提高吞吐量,增大伺服器記憶體,可以採用讀寫分離,降低單台資料庫的訪問壓力,查詢的時候控制資料量的大小,返回更少資料,減少互動次數,減少cpu及記憶體的開銷,sql優化 如果乙個表中資料量過大我們可以採用橫切割,...
資料庫優化 SQL優化
前面一篇文章從例項的角度進行資料庫優化,通過配置一些引數讓資料庫效能達到最優。但是一些 不好 的sql也會導致資料庫查詢變慢,影響業務流程。本文從sql角度進行資料庫優化,提公升sql執行效率。判斷sql是否有問題時可以通過兩個表象進行判斷 可以使用sar命令,top命令檢視當前系統狀態。也可以通過...