0

アプリケーションから複雑な SQL クエリを実行しています。クエリは、バージョン 3.6.11 (64ms) で正常に実行されます。3.6.22 で実行すると、終了までに 100 秒以上かかります。コマンド ライン クライアントから実行すると、11 と 22 の両方で実行が高速です。そのため、アプリケーション内から "EXPLAIN" を使用してクエリを実行したいと考えています。出来ますか?クエリを準備してステップ実行し、列をテキストとして読み取ろうとしましたが、結果は空です。

C++ API を使用してアプリケーションから「EXPLAIN」を実行できますか?

4

1 に答える 1

0

SQLiteオペコードページによると:

コンパイル時のオプションに応じて、SQLite仮想マシンを、メッセージを標準出力に書き込むことで実行をトレースするモードにすることができます。非標準のSQL「PRAGMA」コメントを使用して、トレースのオンとオフを切り替えることができます。トレースをオンにするには、次のように入力します。

PRAGMA vdbe_trace=on;

同様のステートメントを入力し、値を「on」から「off」に変更することで、トレースをオフに戻すことができます。

また、EXPLAIN ...クエリからの出力は、(順序付けられた)レコードのセットであり、必要に応じてデコードできます。参照:このSQLiteページ

于 2010-03-03T21:12:13.113 に答える