実現したいこと
SQLServerにて該当する列をインデックス化しようと試みたのですがインデックスを作成しても実行結果にて反映されません。
SQLServerにてインデックスを使用したいです。
発生している問題・分からないこと
SQLServerをインデックスにするため一つの列を非クラスター化インデックスし実行してみたのですが、実行結果がClustered Index ScanからIndex Seakにならずインデックス化できません。
原因を調べてもよくわからず、どうすればインデックス化できるでしょうか?
該当のソースコード
インデックス化されているか検証するために使ったコード DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE select * from 加工費 where 見積ID = '001771'; DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE select * from 加工費 where 加工費ID = 1;
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
参考にしたサイト
https://anderson02.com/sqlserver/sqlserver-index/sqlserver-index-2-08/
https://itexp-ssworks.com/archives/172/
上記2つのサイトを参考に列の1つである見積IDを非クラスター化インデックスとして作成することができました。
しかし、実行してもClustered Index ScanのままでIndex Seakとはならなかったです。
データの検索そのものに関しては問題なく抽出することができました。
主キーである加工費で実行した場合はクラスター化インデックスシークと表示されました。
補足
・SQLServerのデータはaccessとデータリンクしている
・見積IDは別の表にも参照されている(見積明細、加工費、材料費、初回費用、運賃)
主キーは各表別にあり見積IDのデータ型、NULLの有無は同じ
加工費
加工費ID(主キー int) 見積ID(varchar(20) NULL ×) 見積明細ID(varchar(20) NULL ×)
得意先ID(varchar(20) NULL ×) 型番(varchar(30) NULL ×) 年度(int NULL ×)
工程(varchar(50) NULL ×) 工程数(float NULL ×) 単価(float NULL ×) 人件費(float NULL ×)
更新日(datetime NULL 〇)
Microsoft SQL Server 2022
あなたの回答
tips
プレビュー