Ultra Light オプティマイザは、クエリの最適化に使用するインデックスを選択する際に、優れた最適化方式を取ります。ただし、単純なクエリの場合、オプティマイザがクエリパフォーマンスの最適化に使用するインデックスをあらかじめ決めることや、そもそもインデックスを使用するかどうかを決めることは、簡単ではありません。複雑さが増すにつれて、選択するインデックスはクエリで必要な句によって変わってきます。通常、FOR READ ONLY 句が存在することで、オプティマイザが、クエリパフォーマンスの向上のためにインデックスではなくダイレクトテーブルスキャンを選択することがあります。
クエリを最適化する場合、オプティマイザはクエリの要件を確認し、パフォーマンスの向上に使用できるインデックスがないかどうかをチェックします。どのインデックスを使用してもパフォーマンスの改善が望めない場合、オプティマイザはインデックスをスキャンせず、テンポラリテーブルかダイレクトページスキャンを使用します。したがって、インデックスを使用して実験し、生成された実行プランを頻繁にチェックして、次の事項を確認する必要があります。
オプティマイザによって使用されないインデックスを保持していないこと。
作成されるテンポラリテーブルの数を最小限に抑えていること。
複雑なクエリの場合には、使用されるインデックスを予測するのはさらに困難です。たとえば、クエリに WHERE 述部があり、ORDER BY 句に加えて GROUP BY 句が存在する場合、インデックスが 1 つだけではクエリの探索条件を満たさない可能性があります。したがって、WHERE 述部の選択性要件を満たすインデックスを作成していても、オプティマイザがそれを使用しない可能性があります。代わりに、オプティマイザは、最も多くの処理を必要とする ORDER BY 条件でのパフォーマンスが最も優れているインデックスを使用する可能性があります。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |