巨集觀:
1.快取。在持久層或持久層之上做快取。 從資料庫中查詢出來的資料先放入快取中,下次查詢時,先訪問快取。假設未命中則查詢資料庫。
2.表分割槽和拆分.不管是業務邏輯上的拆分還是無業務含義的分割槽。
3.提高磁碟速度.這包含raid和其它磁碟檔案分段的處理。基本的思想是提高磁碟的併發度(多個物理磁碟存放同乙個檔案)。
微觀:
表設計方面:
1.字段冗餘
.降低跨庫查詢和大表連線操作。
2.資料庫表的大字段剝離.
保證單條記錄的資料量非常小。
3.恰當地使用索引, 甚至是多級索引。
查詢優化方面:
2.應盡量避免在 where 子句中對字段進行 null 值推斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如:
select id from t where num is null
能夠在num上設定預設值0,確保表中num列沒有null值。然後這樣查詢:
select id from t where num=0
3.應盡量避免在 where 子句中使用!=或<>操作符。否則將引擎放棄使用索引而進行全表掃瞄。
4.應盡量避免在 where 子句中使用 or 來連線條件,否則將導致引擎放棄使用索引而進行全表掃瞄,如:
select id from t where num=10 or num=20能夠這樣查詢:
select id from t where num=10 union all select id from t where num=20
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
6.以下的查詢也將導致全表掃瞄:
select id from t where name like '%abc%' 若要提高效率,能夠考慮全文檢索。
7.索引並非越多越好,索引固然能夠提高對應的 select 的效率,但同一時候也減少了 insert 及 update 的效率,由於 insert 或 update 時有可能會重建索引。所以如何建索引須要謹慎考慮,視詳細情況而定。乙個表的索引數最好不要超過6個。若太多則應考慮一些不常使用到的列上建的索引是否有 必要。
8.盡量使用數字型字段,若僅僅含數值資訊的字段盡量不要設計為字元型,這會減少查詢和連線的效能,並會新增儲存開銷。這是由於引擎在處理查詢和連線時會逐個比較字串中每個字元,而對於數字型而言僅僅須要比較一次就夠了。
9.不論什麼地方都不要使用 select * from t ,用詳細的字段列表取代「*」,不要返回用不到的不論什麼字段。
10.避免頻繁建立和刪除暫時表,以降低系統表資源的消耗。
資料庫查詢優化
方法 1 1.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。步驟閱讀 22.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num is...
資料庫查詢優化
本記載,用於保留面對大資料量時,查詢速率待優化,只記錄要點,具體如何操作,還需查詢 1 索引優化 通過建立合理高效的索引,提高查詢的速度.2 sql優化 根據需求,組織優化sql語句,使查詢效率達到最優,在很多情況下要考慮索引的作用 3 水平拆分 如果表的資料量增長特變塊,索引帶來的效能優化可能達到...
資料庫查詢優化
1 對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。2 應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄 如 select id from t where num is null 可以在nu...