如何優化資料庫查詢

2021-09-02 04:15:35 字數 1680 閱讀 2502

巨集觀:

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...