MySQL,優化查詢的方法

2022-08-31 20:09:22 字數 2085 閱讀 8731

對於資料庫,優化查詢的方法

1.使用索引

使用索引時,應盡量避免全表掃瞄,首先應考慮在 where 及 order by ,group by 涉及的列上建立索引。

2.優化sql語句

1)分析查詢語句:通過對查詢語句的分析,可以了解查詢語句執**況,找出查詢語句執行的瓶頸,從而優化查詢語句。

通過explain(查詢優化神器)用來檢視sql語句的執行結果,可以幫助選擇更好的索引和優化查詢語句,寫出更好的優化語句。

例如:explain select * from news;

2)任何地方都不要使用select * from t ,用具體的字段列表代替「*」,不要返回用不到的任何字段。

3)不在索引列做運算或者使用函式。

4)查詢盡可能使用 limit 減少返回的行數,減少資料傳輸時間和頻寬浪費。

3.優化資料庫物件

1)優化表的資料型別

使用 procedure analyse()函式對錶進行分析,該函式可以對錶中列的資料型別提出優化建議。表資料型別第乙個原則是:使用能正確地表示和儲存資料的最短型別。這樣可以減少對磁碟空間、記憶體、cpu快取的使用。

使用方法:select * from 表名 procedure analyse();

2)對錶進行拆分

通過拆分表可以提高表的訪問效率。有兩種拆分方法:

a.垂直拆分(按照功能模組)

將表按照功能模組、關係密切程度劃分出來,部署到不同的庫上。例如:我們會建立定義資料庫workdb、商品資料庫paydb、使用者資料庫userdb等,分別用於儲存專案資料定義表、商品定義表、使用者資料表等。

把主鍵和一些列放在乙個表中,然後把主鍵和另外的列放在零乙個表中。如果乙個表中某些列常用,而另外乙個些不常用,則可以採用垂直拆分。

b.水平拆分(按照規則劃分儲存

當乙個表中的資料量過大時,我們可以把該錶的資料按照某種規則進行劃分,例如userid雜湊,然後儲存到多個結構相同的表和不同的庫中。

根據一列或者多列資料的值吧資料行放到兩個獨立的表中。

3)使用中間表來提高查詢速度

建立中間表,表結構和源表結構完全相同,轉移要統計的資料到中間表,然後在中間表上進行統計,得出想要的結果。

4.硬體優化

1)cpu優化

選擇多核和主頻高的cpu。

2)記憶體的優化

使用更大的記憶體。將盡量多的記憶體分配給mysql做快取。

3)磁碟i/o的優化

a.使用磁碟陣列

raid 0沒有資料冗餘,沒有資料校驗的磁碟陳列。實現raid 0至少需要兩塊以上的硬碟,它將兩塊以上的硬碟合併成一塊,資料連續地分割在每塊盤上。

raid 1是將乙個兩塊硬碟所構成raid硬碟陣列,其容量僅等於一塊硬碟的容量,因為另一塊只是當作資料「映象」。

使用raid-0+1磁碟陣列。raid 0+1是raid 0和raid 1的組合形式。它在提供與raid 1一樣的資料安全保障的同時,也提供了與raid 1近似的儲存效能。

b.調整磁碟排程演算法

選擇合適的磁碟排程演算法,可以減少磁碟的尋道時間。

5.mysql自身的優化

對mysql自身的優化主要是對其配置檔案my.cnf中的各項引數進行優化調整。如指定mysql查詢緩衝區的大小,指定mysql允許的最大連線程序數等。

6.應用優化

1)使用資料庫連線池

2)實用查詢快取

它的作用是儲存 select 查詢的文字及其相應結果。如果隨後收到乙個相同的查詢,伺服器會從查詢快取中直接得到查詢結果。查詢快取適用的物件是更新不頻繁的表,當表中資料更改後,查詢快取中的相關條目就會被清空。 

查詢優化(MySQL優化查詢)

關聯查詢太多join 設計缺陷或不得已的需求 資料庫伺服器調優及各個引數設定不適當 緩衝 執行緒數等 慢查詢日誌 找出執行速度慢的sql語句 慢查詢的開啟並捕獲 explain 慢sql分析 show profile查詢sql在mysql伺服器裡面的執行細節和生命週期情況 sql資料庫伺服器的引數調...

跟蹤MYSQL 的查詢優化過程方法

handle select mysql select join prepare setup fields join optimize optimizer is from here optimize cond opt sum query make join statistics get quick r...

mysql統計查詢優化 Mysql查詢優化

效能涉及的層面很多,但是在操作層面,主要有表結構設計優化 索引優化和查詢優化 查詢的生命週期大致可以分為,從客戶端 到服務端 在伺服器上解析 生成執行計畫 執行 返回結果給客戶端 sql執行流程 具體優化技巧 1.消除外連線 2.消除子查詢 盡量用join代替子查詢,雖說mysql查詢優化器會進行優...