ジオメトリ列を持つSQL Server 2012データベーステーブルがあり、このテーブルには単一のSpatialインデックスがあります。SQL Serverインデックスヒント用の文字列変数の使用方法?
いくつかの地理空間分析(交差/包含)を実行するためのSQLクエリがあり、空間インデックスを使用するよう強制するとクエリ実行のパフォーマンスが大きく異なります(this answerはサイズに依存します)。私が使用するテーブル)。私のテーブルはポリスの1-2Kとポイントの1-2Kです。
したがって、私はS7_idx
が私の空間インデックスの名前であるSQLクエリでWITH (INDEX(S7_idx))
を使用します。
ただし、このSQLクエリを同じテーブルを持つ別のデータベースで実行すると、Spatialインデックスに別の名前が付いている可能性があります。したがって、私はインデックス名をハードコードしたくありません。テーブルにSpatialインデックスが1つしかないことを確認できるので、インデックス値を動的に取得できれば素晴らしいと思います。
select name from sys.indexes where object_id = (select object_id from sys.objects where name = 'TableName') AND type_desc = 'SPATIAL'
結果:
name S7_idx
グレート。今度は、WITH
ステートメントでハードコードされたインデックス名の代わりにこの値を使用します。これはどうすればいいですか?
WITH (INDEX(...))
ステートメントの中に動的SQL(EXECUTE sp_executesql
)を使用することはできないと思います。
おかげであり、あなたのテーブルに考えて私が必要としたもの。これを行うための他の方法はありますか?私はストアドプロシージャの一部であり、SQLコードで文字列の束を連結することは嫌い、かなり毛深いクエリを持っています... –