SQLサーバーのインデックスを計算カラム?
-
19-09-2019 - |
質問
たテーブルに数十倍、毎回、私はフィルター)の結果に基づきの部分文字列の列(この文字列が左詰められゼロで、いつの桁)を入力します。その結果、このカラムは物価連動や私のクエリを利用する指数で、テーブルのスキャンでの部分文字列そのものな物価連動で、まさにSQLサーバーが計算では、各列の前では全衛生管理部"を新設しました。
私もアイデアなどを加速す。現在のビューのテーブル(この選択"から"だけのテーブルの名前、私の考えを追加するカラムのビューの計算、割り出します。私は開その他のご提案ものは思いの?
詳細: いといけないこと。のテーブルを受け取からのレプリケーション当社の課金システム、編集、配下のテーブルを追加する計算カラムという選択肢はないと思います。計算カラムが追加するビューです。また、ゼロ埋め込んで先頭にないものその他のデータをしているところに興味がない。よいのではないでしょうか実際の問題は"どうでも参加できますデータのVARCHARカラムを活用するとともに指数?全文検索?"
明らかに私の例 私の簡素化、基本的にそして、そういう見出しの値がカラムの値
00000012345MoreStuff
00000012345Whatever
19834212345
Houses12345837443GGD
00000023456MoreStuff
に興味がある私にとって列が部分文字列(7,5)="12345"もったい行1-4な行5.私の提案は列の追加を私"を選択※"ビューのこの部分文字列で、指数付けに基づきます。なくです。
解決
を想定している分野でこのフォーマット:
00Data0007
000000Data0011
0000Data0015
, きに
を作成し計算コラム:
ndata AS RIGHT(REVERSE(data), LEN(data) - 4)
これをカラムを、以下の
ataD00 ataD000000 ataD0000
を作成しインデックスこのコーナー
このクエリ検索の文字列
Data
:SELECT * FROM mytable WHERE ndata LIKE N'ataD%' AND SUBSTRING(ndata, LEN(N'ataD') + 1, LEN(ndata)) = REPLICATE('0', LEN(ndata) - LEN('ataD'))
最初の状態のまま使用する指標粗ンです。
第二は、数字となったの末尾の文字列計算)のものでゼロのままにしてお
このエントリを自分のブログの性能を詳細:
更新
また、インデックス SUBSTRING
なく変更するスキーマ、ビューの作成は、オプションとなっています。
CREATE VIEW v_substring75
WITH SCHEMABINDING
AS
SELECT s.id, s.data, SUBSTRING(data, 7, 5) AS substring75
FROM mytable
CREATE UNIQUE CLUSTERED INDEX UX_substring75_substring_id ON (substring75, id)
SELECT id, data
FROM v_substring75
WHERE substring75 = '12345'
他のヒント
を追加 計算カラム ごテーブルの作成を指標にこのカラムです。
ALTER TABLE MyTable
Add Column CodeHead As LEFT(Code,Len(Code)-4)
それを指します。
CREATE INDEX CodeHeadIdx ON MyTable.CodeHead
あなたはLIKE「何か%」ステートメントの面であなたのフィルタ基準をフレーズに再することはできますか? (これは、インデックスにも適用可能である)
2列に列を変更します。 コラムの部品を使用すると、あなたが見HVEとして物事を遅くする。