2010-07-08 53 views
42

我正在使用一個SQLite數據庫,並希望加快我的查詢,也許與索引或完全重構他們。有沒有一個工具來配置sqlite查詢?

是否有一個工具來配置查詢,這可能會幫助我確定事情放緩的地方?

我知道我只需將查詢輸入SQLite Administrator等工具來計時,但我正在尋找一些比這更有系統性的東西 - 可能是位於後臺並查看所有查詢的東西我進入了一段時間,給出了瓶頸的細分。

+0

對於一個好問題+1。我也喜歡其中之一。很顯然你在問這裏之前是用google搜索的,所以可能不太可能。你是否也檢查過SOurceForge&FreshMeat? – Mawg 2010-07-08 00:11:06

+1

在google上搜索'sqlite profile'會產生:http://katastrophos.net/andre/blog/2007/01/04/sqlite-simple-timing-profiler-patch/但是這是一個針對sqlite shell的補丁,我寧願避免,我不認爲它做我想要的。Sourceforge/FM沒有任何興趣(不是我在詢問原始問題之前已經檢查過)。 – bryn 2010-07-08 00:31:46

回答

20

您在這裏混合了各種問題。要查看運行的查詢和每個查詢需要多長時間,如果應用程序鏈接到該應用程序,或者如果它是您自己的應用程序,則可以更容易地將其寫入代碼(我們這樣做並且全部都是這樣),則需要修改sqlite3.dll查詢,交易,時間等)。

對於單個查詢分析,您可以使用EXPLAIN。它不會告訴你查詢中單個步驟的時間,但它會告訴你如何執行查詢。

http://www.sqlite.org/lang_explain.html

的SQL語句可以通過關鍵字「解釋」或短語前面「解釋查詢計劃」。任何修改都會導致SQL語句作爲查詢行爲,並返回有關SQL語句在未省略EXPLAIN關鍵字或短語時將如何操作的信息。

當EXPLAIN關鍵字本身出現時,它會導致該語句作爲查詢返回虛擬機指令序列,該指令將用於在EXPLAIN關鍵字不存在時執行該命令。當EXPLAIN QUERY PLAN短語出現時,該語句會返回有關使用哪些索引的高級信息。

EXPLAIN和EXPLAIN QUERY PLAN的輸出僅用於交互式分析和故障排除。輸出格式的細節可能會從SQLite的一個版本更改爲下一個版本。應用程序不應該使用EXPLAIN或EXPLAIN QUERY PLAN,因爲它們的確切行爲是無證的,未指定的和可變的。

+0

我會接受這個答案,但它不是我想聽到的答案。我希望爲這項工作提供稍高一些的工具。 – bryn 2010-08-05 01:32:56

+1

@bryn,我同意你的看法,SQLite通常缺乏好的高級工具。考慮到它的用途有多廣泛,這實際上是非常令人驚訝的。也許絕大多數應用程序與簡單模式(不需要良好管理或分析工具)的小型數據庫(即嵌入式設備)隔離。 – 2010-08-05 02:07:55

32

這隻會回答問題的一部分(不幸的是,最無益的部分)。

我google了這個,因爲我正在尋找一些時間查詢和sqlite3客戶端有一個計時器元命令。

sqlite的>上

從那裏在.timer,所有查詢結果都會有附加的CPU計時器統計。 希望這至少有一點幫助。

+6

+1雖然這並沒有回答這個問題,但我敢打賭,50%的人來到這個頁面正在尋找 – tjb 2012-07-27 10:22:56

+1

這絕對是我來這裏的原因;謝謝! – 2013-01-30 03:47:31

2

現在SQLite有實驗sqlite3_tracesqlite3_profile(詳情請參閱https://www.sqlite.org/c3ref/profile.html)。他們可以派上用場,因爲在長時間的測試中有統計/調查罪魁禍首。

相關問題