sql語句查詢慢原因

2022-01-17 20:55:51 字數 905 閱讀 9883

1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程式設計的缺陷)   

2、i/o吞吐量小,形成了瓶頸效應。   

3、沒有建立計算列導致查詢不優化。   

4、記憶體不足   

5、網路速度慢   

6、查詢出的資料量過大(可以採用多次查詢,其他的方法降低資料量)   

7、鎖或者死鎖(這也是查詢慢最常見的問題,是程式設計的缺陷)   

8、sp_lock,sp_who,活動的使用者檢視,原因是讀寫競爭資源。 (sql server)  

9、返回了不必要的行和列   

10、查詢語句不好,沒有優化   

可以通過如下方法來優化查詢   

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

2、縱向、橫向分割表,減少表的尺寸(sp_spaceuse)   

3、公升級硬體   

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

5、提高網速;   

6、擴大伺服器的記憶體。配置虛擬記憶體:虛擬記憶體大小應基於計算機上併發執行的服務進行配置。 7、增加伺服器cpu個數;但是必須明白並行處理序列處理更需要資源例如記憶體。   

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

9、重建索引   

PostgreSQL 慢查詢SQL語句跟蹤

示例 啟用 sql 跟蹤 postgresql 日誌支援的輸出格式有 stderr 預設 csvlog syslog 一般的錯誤跟蹤,只需在配置檔案 postgresql.conf 簡單設定幾個引數,當然還有錯誤級別等要設定。logging collector on log destination ...

sql查詢慢 查詢

select creation time n 語句編譯時間 last execution time n 上次執行時間 total physical reads n 物理讀取總次數 total logical reads execution count n 每次邏輯讀次數 total logical ...

mysql慢查詢,處理sql語句執行速度慢問題

臨時開啟慢日誌 如重啟資料庫,還會改為預設值off,如需永久改需要修改配置檔案 show variables like slow query log 如果查詢出的值為off則需要開啟慢日誌 set global slow query log on 開啟慢日誌 設定1秒以上為慢查詢 如重啟資料庫,還會...