0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SQLのインデックスについて

Posted at

インデックスについて

参考にし、自分の解釈をしてみました。
参考にしたサイト
https://sikushima.hatenablog.com/entry/20100625/1277459546

インデックスとは

まずインデックスについて知る必要があります。
インデックスとは、「索引」です。
目次という方は多いですが、一度Google翻訳にてしらべてください。
目次はTOC(table of contents)で、索引(Index)になります。

・目次 = Table of contents(略称:TOC)

見出しや項目、章立てなどを箇条書きにしたもの

・索引 = Index

項目や用語を探しやすくするために五十音順やアルファベット順に並べたもの

今回一例として、
dアニメストアでアニメを探すときの「さがす」がインデックス。
アニメと結びついている固有IDが主キー、アニメ内容が実レコードです。
「さがす」は、「作品50音順」と「監督名順」の2つは最低限あると考えます。
これらは、
作品50音順は、「アニメ名・監督名」の組み合わせの複合インデックス。
監督名順は、「監督名・アニメ名」組み合わせの複合インデックス。
と考えることができます。

インデックスのリビルドとは

リビルドとは、再構築という意味です。
最近のアニメは、昔と違ってひとつの作品をながくではなく、人るの作品をワンクール続けばいいという考えてで作られています。
少し話が反れました。
戻しましょう。
アニメ一覧を見たときに、一番初めに出てきますが、検索した際に、ワンクールごとにアニメ一覧の一番初めに出てきたら、もう一度作り直せよ!!って思うますよね。

インデックスが多いと更新が遅い

インデックスが多いと更新が遅いというのも、よく言われることです。
例えば、「作品50音順」と「監督名」以外に、「決め台詞」や「出演する声優名」、「アニメのオープニング曲」や「アニメのエンディング曲」など複数のインデックスを作成した際に、「決め台詞」をまとめる容量が必要です。
そのうえ、新しいアニメが出たら、その都度更新すると遅くなります。
インデックスを過剰につけると、このように更新が遅くなりますけれど程度の問題です。最近のハードウェア環境では、メモリーが非常に大量にあることが多いので、インデックスを作った方が良いことが多いと思います。

LIKE検索でインデックスを使わないとは

最近のアニメでは、「俺の妹がこんなにかわいいわけがない」などをはじめとする文章系タイトルがあります。
アニメ名で探すとしても「妹」で「俺の妹がこんなにかわいいわけがない」を探すには、1ページめから見ていくしかないですね。
つまり、LIKE検索で、一部一致、後方一致の場合はインデックスがあっても使えません。

逆に「俺の妹」までは分かっているときは、善寳一致になりますので、「俺の妹」まではインデックスが使えます。「作品50音順」でも「俺の妹」のとを 忘れていても検索できるでしょう。

LIKE検索は、ハードが高性能であれば便利ですけれど、レコード数や検索頻度の兼ね合いで十分に考慮して設計しないと、将来、大きな問題になることがあります。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?