慢查詢的原因及解決方案

2022-07-28 20:27:19 字數 893 閱讀 5305

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

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

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

4、記憶體不足 

5、網路速度慢 

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

7、鎖或者死鎖(這也是查詢慢最常見的問題,是程式設計的缺陷)sp_lock,sp_who,活動的使用者檢視,原因是讀寫競爭資源。 

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

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

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

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

3、公升級硬體 

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

5、提高網速; 

6、擴大伺服器的記憶體,windows 2000和sql server 2000能支援4-8g的記憶體。 

7、增加 伺服器cpu個數;但是必須明白並行處理序列處理更需要資源例如記憶體。使用並行還是串行程是mssql自動評估選擇的。單個任務分解成多個任務,就可以在 處理器上執行。例如耽擱查詢的排序、連線、掃瞄和group by字句同時執行,sql server根據系統的負載情況決定最優的並行等級,複雜的需要消耗大量的cpu的查詢最適合並行處理。但是更新操作 update,insert,delete還不能並行處理。 

8、如果是使用like進行查詢的話,簡單的使用index是不行的,但是全文索 引,耗空間。

記憶體溢位原因及解決方案

記憶體溢位是指應用系統中存在無法 的記憶體或使用的記憶體過多,最終使得程式執行要用到的記憶體大於虛擬機器能提供的最大記憶體。引起記憶體溢位的原因有很多種,常見的有以下幾種 1.記憶體中載入的資料量過於龐大,如一次從資料庫取出過多資料 2.集合類中有對物件的引用,使用完後未清空,使得jvm不能 3.中...

git clone慢 解決方案

我一直開著clash但是從github上面clone 的時候速度特別慢。觀察connections裡面,看起來並沒有走這裡過。因為git命令沒有走 過 針對所有網域名稱的 git 倉庫 注意 glboal 選項指的是修改 git 的全域性配置檔案 gitconfig,而非各個 git 倉庫裡的配置檔...

查詢慢問題解決方案

比如在我們專案裡乙個表的資料量很大的時候,建立時間建索引,統計數量時,查詢7天的資料,如果加其他無索引的條件,例如 status 1的時候,耗時巨大。此表在相同時間段內,插入的資料不平均,導致時間索引在整個時間內不均衡,即如上在查詢7天資料的時候,查詢出1月10 1月17的數量為700w 1月20 ...