実行中または過去に実行したクエリの情報を確認する目的でquery_profilesテーブルを検索することがあります。
しかし、query_profilesテーブルには過去に実行したクエリが大量に保存されているため、目的のクエリ情報を検索するのは少し大変です。
※session_id、transaction_id、statement_id列を条件で指定することで、目的のクエリ情報を検索することは可能ですが、それらのIDを控えていないとそのIDを探すのもまた大変です。
このような場合、クエリ実行時に、SQLヒントでラベルを付与しておくことで、目的のクエリ情報を検索しやすくなります。
クエリにラベルを付与する方法
クエリにラベルを付与する場合はクエリ実行時に、labelというSQLヒントを指定します。
1 |
SELECT /*+ LABEL(任意のラベル名)*/ 列名 FROM テーブル名; |
使用例
以下は、ssbmスキーマのdate1テーブルを検索するクエリに「私のクエリ」というラベルを付与した場合の例です。
1 2 3 4 5 |
dbadmin=> select /*+ LABEL(私のクエリ)*/ COUNT(*) FROM ssbm.date1; COUNT ------- 2556 (1 row) |
クエリにラベルを付与しても、実行結果に影響はありません。
上記クエリの情報をquery_profilesテーブルで検索する場合は、検索条件としてidentifier列を使用します。
1 |
dbadmin=> SELECT * FROM query_profiles WHERE identifier = '検索したいクエリのラベル名'; |
クエリの実行時間を確認する例)
1 2 3 4 5 |
dbadmin=> select identifier, query,query_start from query_profiles where identifier='私のクエリ'; -[ RECORD 1 ]--------------------------------------------------------- identifier | 私のクエリ query | select /*+ LABEL(私のクエリ)*/ COUNT(*) FROM ssbm.date1; query_start | 2018-08-13 10:37:56.7949+09 |
このように、identifier列を条件列として指定するのみで、目的のクエリを検索できます。
その他のヒント句については以下の記事をご参考ください。
SQLヒントを利用する(7.2新機能)
http://vertica-tech.ashisuto.co.jp/sql_hint_7-2/