質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

0回答

286閲覧

SQLServerにてインデックス化できない

syuu07

総合スコア15

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

1クリップ

投稿2024/02/26 04:37

編集2024/02/26 06:28

実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2024/02/26 06:02 編集

実行計画はオプチマイザが最適と判断した内容で出力されますので、インデックスがあるからといってそれが採用されるとは限りません。 先ずは求めたい結果と現状のSQL、および、そのSQLに含まれるテーブルの定義(インデックス含む)と実行計画の結果を質問に情報として追記して下さい。 そもそも参照して欲しいインデックスを使用したとしても、パフォーマンスが改善されるとは限りません。 既存のインデックスのみでSQLの記述を変更するだけで改善する場合もあります。
sazi

2024/02/26 06:09 編集

質問のタイトルも、「インデックスの作成」は手段であって目的ではないですよね。 有用な回答を求めるには、タイトルも適切であった方が良いかと思います。
syuu07

2024/02/26 06:26

コメントありがとうございます。 勉強不足で申し訳ございません。情報を整理した後追記します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問