タグ

ブックマーク / blog.wackwack.net (1)

  • MySQLで全文検索をするために必要なこと - 小さな星がほらひとつ

    与えられたキーワードに合致するデータをデータベースから取得することを考えた時、完全一致であれば「=」で検索を行うと思います。 では与えられたキーワードを「含む」検索、つまり部分一致を行いたいのであればどうするか。最も簡単なのは「search_column like '%キーワード%'」といった形で、「like」を使いキーワードの前後にワイルドカードを与える方法でしょう。 ですがこれを何の気無しに使うのはちょっと危険。 上記のようなlike検索ではインデックスが利用されないため(※)、全レコードをスキャンします。 かつキーワードを部分一致で探したいようなカラムは、文章等の比較的大きなサイズであると考えられます。 そのため検索コストは大きく、数千〜数万行であればまだ良いかもしれませんが、数十万ともなると利用には耐えられないでしょう。(実体験) ※ただし前方一致検索であれば、最初のワイルドカード

    MySQLで全文検索をするために必要なこと - 小さな星がほらひとつ
  • 1