一次SQL調優資料庫效能問題後的過程 300W

2022-09-25 03:42:10 字數 1229 閱讀 1499

將絕大部分的sql查詢改為儲存過程,這樣的操作毫無疑問可以提高部分效能。

凡是使用「select * from ***」的操作一律具體到所需欄位。

使用join連線2個以上大量資料的表,且基礎資料表變化不大的查詢一律使用檢視,並為此檢視建立索引。理由來自sql server聯機幫助手冊: 「對於標準檢視而言,為每個引用檢視的查詢動態生成結果集的開銷很大,特別是對於那些涉及對大量行進行複雜處理(如聚合大量資料或聯接許多行)的檢視。如果在查詢中頻繁地引用這類檢視,可通過對檢視建立eopakagu唯一聚集索引來提高效能。對檢視建立唯一聚集索引後,結果集將儲存在資料庫中,就像帶有聚集索引的表一樣。

對檢視建立索引的另乙個好處是:優化器可以在未直接在 from 子句中指定某一檢視的查詢中使用該檢視的索引。這樣一來,可從索引檢視檢索資料而無需重新編碼,由此帶來的高效率也使現有查詢獲益。」

凡是使用 "sel程式設計客棧ect count(*) from ***" 或是"select count(id) from ***」(此處id為主鍵)的查詢,一律改為」select count(1) from ***」,理論上採用*來做聚合值,sql server會自動尋覓最合適的字段以進行聚合,但這樣仍然會占用系統開銷,即使主鍵也沒有1來得快。 程式設計客棧

對於多條件的組合查詢,我們一般會寫成」where ((@condition is null) or (condition=@condition))」形式的儲存過程條件來進行查詢,但這樣的操作會因為」is null 」導致效能問題,反覆實地檢測後採用了」where 1 = 1 」,然後根據條件「if @condit程式設計客棧ion is not nu程式設計客棧ll set @sqltext=@sqltext+' and condition=''' + @condition +'''',最後 「exec sp_executesql @sqltext」 的方式,這樣確實可帶來明顯的效能提公升,分析應是」is null 」或」is not null」導致了索引失效,進行了全表掃瞄。

對使用row_number()函式的表建立合適的索引,必須要有最合適的索引才能避免重建索引時的全表row_number()運算帶來的效能問題,而且索引的方向也很重要,比如時間類的索引用降序往往比公升序效能高。

這個不是效能問題,但也很重要,在儲存過程中應使用scope_identity()函式來獲得最新的標量,而不是@@identity這個全域性變數,因為@@identity會受到觸發器的影響而失去正確值。

本文標題: 一次sql調優資料庫效能問題後的過程(300w)

本文位址:

效能調優 記錄一次資料庫sql語句效能調優過程

一,依舊很簡單的乙個介面,查詢列表介面,發現10併發單交易場景下,資料庫表4w鋪底資料,每次查詢2000條資料進行orderby顯示,平均響應時間2秒以上,資料庫的cpu使用率高達95 二,抓到這條sql語句 select from table1 t1 left join table2 t2 on ...

測試發現資料庫效能問題後的SQL調優

對單錶超過300w 資料的web應用程式進行測試後發現了一些功能 效能問題,採取了以下辦法來進行調整 將絕大部分的sql查詢改為儲存過程,這樣的操作毫無疑問可以提高部分效能。凡是使用 select from 的操作一律具體到所需欄位。使用join連線2個以上大量資料的表,且基礎資料表變化不大的查詢一...

SQL效能優化 資料庫調優 概覽

簡單的目的 執行更快,響應更快,吞吐量更大 不過目標太泛,不夠具體,所以我們需要根據精細的問題定位去調優。通常是以下幾種 資料庫調優不僅有sql,部署 配置 架構也很重要 1.選擇合適dbms 對事務效能和安全要求比較高,選擇商業資料庫如sqlserver,mysql有很多儲存引擎,innodb善於...