検索引数可能とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > 検索引数可能の意味・解説 

検索引数可能

(SARGable から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/11/05 18:26 UTC 版)

検索引数可能 (: sargable)とは、関係データベースにおいて、DBMSエンジンがインデックスを利用してクエリの実行を高速化できる述語や条件のこと。日本語の文脈でもSARGableのように記載されることがある[1]。この用語は、 Search ARGumentABLEの短縮形に由来する。検索引数可能でないクエリは、non-sargableクエリと呼ばれ、インデックスが効かない。

概要

検索引数可能でないクエリは、通常はクエリ時間に悪影響を与えるため、クエリ最適化の一環として、それらを検索引数可能な述語に変換する。この最適化の効果は、索引のない本で特定の用語を検索するのと似ており、毎回1ページから見ていく必要があったのを、索引をつけることで特定のページにすぐにジャンプできる。

SQLクエリを検索引数可能ためには、典型的にはWHERE句に列値を操作する関数を含めるようにすることである。 検索引数可能性が問題になるのはWHERE句だけではなく、ORDER BY、GROUP BY、およびHAVING句も考慮する必要がある。一方、SELECT句には、パフォーマンスに悪影響を与えることなく、検索引数可能でない式を含めることができる。

  • 検索引数可能な演算子=, >, <, >=, <=, BETWEEN, LIKE, IS [NOT] NULL
  • 検索引数可能な演算子だが速度改善があまり見込めないもの:<>, IN, OR, NOT IN, NOT LIKE

簡単な例

Microsoft SQL Serverでの文法を例に取って見てみる。

WHERE句は、通常、演算子の左側にフィールド値、演算子の右側にスカラー値または式が配置される。

以下の記述は検索引数可能ではない

SELECT * 
FROM  myTable
WHERE 11.7 < SQRT(myIntField)

myIntFieldが関数の中に埋め込まれているため、これは検索引数可能ではない。 myIntFieldに使用可能なインデックスがある場合、インデックスは利用できない。さらに、 SQRT()はmyTableのすべてのレコードで呼び出される。

検索引数可能にした書式:

SELECT * 
FROM  myTable
WHERE myIntField > 11.7 * 11.7

myIntFieldは関数に含まれておらず、myIntFieldのインデックスを活用することができるため、これは検索引数可能である。さらに、この式は、テーブル内の各レコードに対してではなく、1回だけ評価される。

関連項目

脚注

  1. ^ SARGableという用語は、Griffiths Selingerらが最初に導入したと言われている。ACMが発行した1979年の論文「リレーショナルデータベース管理システムにおけるアクセスパスの選択」で使われている。

参考文献

外部リンク




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  
  •  検索引数可能のページへのリンク

辞書ショートカット

すべての辞書の索引

「検索引数可能」の関連用語

検索引数可能のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



検索引数可能のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの検索引数可能 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS