2009-10-12 135 views
7

在性能(和我自己的大頭棒打擊經驗)永無止境的搜索,我明白了,可能拖垮一個SQL語句的性能的幾件事情。有哪些工具可用於測試SQL語句的性能?

強迫子查詢症
做着瘋狂的類型轉換(和巢那些被遺忘)
集團通過對聚合函數的說瘋狂的類型轉換
凡FLDID中(請從我5密耳記錄表的所有內容)

我通常使用MSSQL。有哪些工具可用於測試SQL語句的性能?這些工具是否內置於每種類型的數據庫服務器中?還是有通用工具可用?

+0

你橋段東西的經歷?或者你的經歷*萌芽*? 米奇的+1。 – DaveE 2009-10-12 17:15:56

回答

9

SQL事件探查器(內置):Monitoring with SQL Profiler

SQL Benchmark Pro(商業)

SQL Server 2008有新的Data Collector

SQL Server 2005(以前)有一個缺少索引的動態管理視圖(DMV),它可能非常有用(但僅適用於當前在計劃緩存中的查詢計劃):About the Missing Indexes Feature

還有在SQL Server Database Engine Tuning Advisor它做了合理的工作(只是沒有實現它意味着一切!)

+0

謝謝,這幾乎讓我開始。這涵蓋了MSSQL的角度,是否有通用工具可用於MySQL或Oracle?或者那些有自己的工具? – MoSlo 2009-10-12 19:55:11

3

我大多隻是用探查和執行計劃觀衆

+0

幾乎所有你需要的,對於個人查詢 – gbn 2009-10-12 17:27:14

0

MSSQL有一個數據庫引擎優化顧問會經常推薦索引基於在運行常用的查詢表調整期間,但它不會爲您重寫查詢。

在我看來,經驗和實驗是編寫良好的SQL查詢的最佳工具。

0

在MySQL(可能是在其他數據庫中也是如此),你可以EXPLAIN查詢,看看數據庫服務器認爲它。這通常用於確定應創建哪些索引。而且這個是內置的,所以你可以在不安裝額外軟件的情況下使用它。

0

亞當Machanic有一個叫做SqlQueryStress簡單的工具,可能是使用的。它旨在用於「針對單個查詢運行快速性能測試,以便測試想法或驗證更改」。

+0

亞當的工具真的很棒。我已經使用它,發現它對調整我的數據庫非常有幫助。 – 2011-07-24 06:38:34

1

Execution Plans是的第一件事看起來調試查詢性能問題當。一個執行計劃會告訴你在查詢的每個部分中大致花費了多少時間,並且可以用來快速識別是否缺少索引或具有昂貴的連接或循環。

相關問題