2010-03-03 52 views
0

我有一個複雜的SQL查詢從我的應用程序執行。該查詢運行正常版本3.6.11(64毫秒)。在3.6.22中運行需要超過100秒才能完成。當從命令行客戶端執行時,11和22中的執行都很快。因此,我想在應用程序內部使用「EXPLAIN」運行查詢。可能嗎?我試圖準備並逐步查詢,然後以文本形式讀取列,但結果爲空。從api的sqlite解釋

可以從我的應用程序使用C++ API執行「EXPLAIN」?

回答

0

按照SQLite opcode page

取決於編譯時的選項,你可以把SQLite的虛擬機的模式,它會通過寫郵件到標準輸出跟蹤其執行。非標準的SQL「PRAGMA」註釋可用於打開和關閉跟蹤。要打開跟蹤,請輸入:

PRAGMA vdbe_trace=on; 

你可以把輸入了類似的聲明,但「開」到「關」改變價值回溯了。

此外,EXPLAIN ...查詢的輸出只是一組(如果您願意的話)可以解碼的(有序的)一組記錄。參見:this SQLite page