質問

たテーブルに数十倍、毎回、私はフィルター)の結果に基づきの部分文字列の列(この文字列が左詰められゼロで、いつの桁)を入力します。その結果、このカラムは物価連動や私のクエリを利用する指数で、テーブルのスキャンでの部分文字列そのものな物価連動で、まさに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「何か%」ステートメントの面であなたのフィルタ基準をフレーズに再することはできますか? (これは、インデックスにも適用可能である)

あなたが参加したデータと、余分な4つの文字 -

2列に列を変更します。 コラムの部品を使用すると、あなたが見HVEとして物事を遅くする。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top