- ベストアンサー
インデックス(index)とはなんでしょうか?仕組みを教えてください。
autyの回答
インデックスを簡単に説明すると、指定されたキーに基づいてインデックスファイルを作成し、select文等のSQL文を実行するときに利用されます。 。作り方の1つとして、キーに基づいて行を並び替え、その真ん中・真ん中を比較しながら求めていけるようにします。 これで全行検査(n行)より早くなります。(数学的にはlog2(n)のオーダーでしょうか) >もしそうであれば、単語内に、「oo」がある文字を探すにはどうすればよいのでしょうか?総当りで調べていく以外の方法が分かりません。 これに関しては、プログラムで対処する以外、SQL文だけではわかりません。 >また、もしインデックスを張ることによって、SELECTの速度が上がるのであれば、なぜ全カラムにインデックスを張らないのでしょうか?インデックスを張るデメリットは何でしょうか?また、インデックスを張るか張らないかの基準は何でしょうか? 更新や削除が頻繁に行われる場合、インデックスファイルの更新に余分に時間がかかることになります。また、インデックスは、複数のキーからも構成されますから、利用目的に応じて作ることになります。 張るか張らないかの基準は、経験を積みながら対処することになるでしょう。 下記のページが参考になるでしょう。
関連するQ&A
- SQLテーブルをインデックスしてSELECTを高速
テーブルのおインデックス項目はSELECTすると検索が早いのですが、 インデックスではない項目をWHEREすると時間がかかります。 そこでテーブルカラム全部をインデックス化することでの メリット、デメリットは何でしょうか?
- ベストアンサー
- SQL Server
- 複合インデックスの設定に関して
MySQLの複合インデックスに関して質問させて頂きます。 現在検索条件に3つのカラムを使用して検索をかけているSELECT文があります。 データの件数は100万件ほどあるとします。 【例】 「SELECT * FROM test WHERE a = '1' AND b = 'xxxxx' AND c = '1';」 カラム「a」「c」は、0と1のみが格納されたカラムで、頻繁に更新されます。 カラム「b」は、同じ値が入ることがありますが、ほぼユニークな文字列が格納されます。 上記のような場合、インデックスは ・「a,b,c」の全てを設定した複合インデックスを作成するべきか。 ・cは頻繁に更新されるので、「a,b」のみの複合インデックスを作成するべきか。 ・aも同じく頻繁に更新されるので、WHERE句の検索順をbを先に持ってきて、「b」のみの単独インデックスを作成するべきか。 一概にこうだという答えは無いかもしれませんが、何か良い方法があれば教えて頂けると幸いです。 また、質問に不備な点がございましたら、ご指摘お願いいたします。
- ベストアンサー
- MySQL
- INDEX RANGE SCAN とは?
OracleのINDEX RANGE SCANについての質問です。 私の理解のレベルでは、INDEX RANGE SCANは範囲検索をする時に発生し、 それ自体は効率的にインデックスを利用している状態である、と理解しています。 もっといえば、betweenを使用したり演算子に「>=」などの不等号を使用した とき以外には発生しないはずと思っていました。 しかし先日、条件部分に「=」等号しかないSQLにてINDEX RANGE SCANが発生しました。 INDEX SKIP SCAN ならまだ話はわかるのですが、間違いなくINDEX RANGE SCANでした。 範囲検索で無い場合にINDEX RANGE SCANになる意味がよくわかりません。 ■以下質問です。 範囲検索の場合にINDEX RANGE SCANになるという私の認識はあっているか。 どのような場合に、等価条件だけの場合にINDEX RANGE SCANになるのか。 等価条件だけなのにINDEX RANGE SCANになる場合、検索の仕組みについて。 ■参考情報として記述しておきます。 バージョンは9iです。 1つのテーブルに対するSELECT文で where句には4つのカラムが等価条件で指定されています。 これらのカラムは条件・カラムの値ともにNULLではありません。 関係あるかわかりませんが、カーディナリティが高いにもかかわらず 適切なインデックスが無いSQLでした。 よろしくお願いします。
- 締切済み
- Oracle
- 自分に合った英単語・熟語の本を探しています。
自分に合った英単語・熟語の本を探しています。 TOEICの受験に向けて、自分に合った英単語・熟語の本を探しています。 家の本棚を探していたら、妻が持っていた「出る順単熟語(英検2級)、ジャパンタイムズ社編」の形式がとても使い易かったので、TOEICでも同じ形式のものがないか探しています。 ※以下出る順の形式です。 ・テキストは「単語」・「意味」・「例文」・「例文の訳」のカラムが分かれている ・音声付きで、「英単語(ネイティブ)」→「意味(日本語)」→「簡単な例文(ネイティブ)」の順番で流れる ・ABC順ではなく頻出順にソートされている 現在Z会の速読英単語(受験用)と、速読速聴coreを持っており、主に読解用に使用しています。 単語に注力するため、例文が短くシンプルなものを探しています。 本屋で上記と同じ形式の本が幾つかあったのですが、音声を確認できないため質問させて頂きました。 ご存知でしたら教えていただけますでしょうか。
- ベストアンサー
- TOEFL・TOEIC・英語検定
- 昇順と降順って・・・
アルファベットのA->Zに向かうのは昇順でしょうか?それとも降順でしょうか? Yahooの辞書によると、 >しょうじゅん【昇順】 >単語などを五十音順,またはアルファベット順に配列する場合に, >ん→あ,Z→A の順で配列すること となっていますが、エクセルの並べ替えだと逆になっています。 どちらが正しいのでしょうか?
- ベストアンサー
- その他(学問・教育)
- Microsoft wordについて
こんにちは。中一の英語大好き人間です。実はこの間Microsoftwordを使って自分の分からなかった英単語をまとめた辞書を製作し始めたのですが、今になるともうぐっちゃぐちゃ。そこで思ったのですがまとめた単語をABC順に並び替えることのできる機能はMicrosoftwordにありますか?もしあれば教えてください。よろしくお願いします。
- 締切済み
- その他(インターネット・Webサービス)
- 単語の勉強について質問でございマッスル!
みなさん!こんにちわ!!!!!!!!!! 僕早稲田を目指して今年から浪人なんですが、英単語の勉強について質問があります! 僕は単語の勉強を 速単必修、上級 の後ろにあるインデックスのところのabc順の単語を丸暗記しています。 単語の語彙数はこの速単必修、上級のインデックスのを全部覚えたら単語の勉強はもうしなくていいんですかね??他にも良書としてターゲットがありますけど、こっちの単語集も二冊目としてやったほうがいいですかね?
- 締切済み
- 大学・短大
- 中学生にお薦めの英単語学習教材
小学6年生の子供を持つ親です。 現在の英語学習はNHKラジオ基礎英語1をテキスト通りに聞いて発音しているのみです。 文法、英単語の勉強はしていません。 文法は英単語は(公立)中学に入ってから、教科書に出てくる順番で覚えられればと思っています。 私が学習したウン十年前は、紙の英単語帳を作って、ひたすら覚えていましたが、今それをやるのは、とっても非効率的ではと思っています。一番のデメリットは、発音が聞けないことだと思います。 入学後にあわてないために、おすすめの(効果的な)英単語学習教材(英単語帳、CD、DS、電子辞書など)を教えてください。
- ベストアンサー
- 英語
- コロケーションの本を探しています
英語のコロケーションの単語帳・辞書などが欲しいのですが、コロケーションの頻用度に基づいた言葉の選択やレヴェル分けがされている本はありますでしょうか。 例えば「辞書を引く」「鉛筆を削る」といったものから「丸く収める」「後手に回る」など、日常よく使うものから「本では見かけるね」といったものまで、頻用度の高いものから順に学んでいけるものを探しています。 英単語自体ついては頻用度に基づいたリストや本はたくさんあるのですが…、よく使うコロケーションを集めた本というのはあまり見かけないもので。 もしありましたらぜひ教えてください。よろしくお願いします。
- 締切済み
- 英語
- どんなインデックスを設定したら良いでしょうか?
お世話になっております。 Windows2003Server SQLServer2000(SP4) を使用しています。 新しく作成したテーブルに、どのようなインデックスを設定したら良いか悩んでいます。 新規作成のテーブル:tableA カラム 主キー 型 規定値 説明 --------------------------------- ユニークNo P INT ユニークなコード 大分類コード P INT 大分類マスタとリンクする 中分類コード P INT 中分類マスタとりんくする 代表フラグ INT 0 0と1があり、1の方が優勢 やりたいこと: tableAからユニークNoが重複しないようにしてデータを取得する。 このとき、ユニークNoが重複している場合は、代表フラグ=1のデータを取得する。 ただし、代表フラグ=1のデータが複数存在する場合は、大分類コード、中分類コードの最若番のデータを取得する。 また、代表フラグ=1が0件で、代表フラグ=0が複数ある場合は、その中から、大分類コード、中分類コードの最若番のデータを取得する。 これを実現するために作成した取得用ストアド: SELECT x.ユニークNo, x.大分類コード, 中分類コード, x.代表フラグ FROM (SELECT ユニークNo, MAX(代表フラグ) AS 代表フラグ FROM [tableA] GROUP BY ユニークNo) AS z, (SELECT ユニークNo, 代表フラグ, MIN(大分類コード) AS 大分類コード FROM [tableA] GROUP BY ユニークNo,代表フラグ) AS x, (SELECT ユニークNo, 代表フラグ, 大分類コード, MIN(中分類コード) AS 中分類コード FROM [tableA] GROUP BY ユニークNo, 代表フラグ,大分類コード) AS y WHERE x.ユニークNo = y.ユニークNo AND x.大分類コード = y.大分類コード AND x.代表フラグ = z.代表フラグ AND y.代表フラグ = z.代表フラグ AND x.ユニークNo = z.ユニークNo アドバイス、宜しくお願いします。
- ベストアンサー
- SQL Server
お礼
ご回答ありがとうございます。 頂いたURLの > インデックスが付加されているフィールドであっても,LIKE '%AAA' のような「後方一致」を指定すると,インデックスを検索せずにデータ部の全表走査が行われます。 という一文で、indexの正体が、なんとなく何者か分かりました。 極めるためには、やはり > 張るか張らないかの基準は、経験を積みながら対処することになるでしょう。 に尽きると思いました。 ありがとうございました。