MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。
Q&A
解決済
3回答
4060閲覧
総合スコア25
1グッド
2クリップ
投稿2017/01/19 07:40
1
2
MySQLにtext形式のカラムを作り、日本語文を入れています。
select * from tbl where item = 'ほげほげ'
item
の様に検索しているのですが、レコード数が増えると検索が重くなります。
itemカラムにindexを貼ろうと思いましたが、text型なのでindexを貼る事ができません。 完全一致で日本語文でもindexが貼れるカラム型があれば教えてください。
尚、文字量は100文字程です。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答3件
0
ベストアンサー
text型なのでindexを貼る事ができません
ということはありません。
プリフィクス長を指定する必要があるだけです。 https://dev.mysql.com/doc/refman/5.6/ja/blob.html
BLOB と TEXT カラムのインデックスには、インデックスプリフィクス長を指定する必要があります。CHAR と VARCHAR では、プリフィクス長はオプションです。セクション8.3.4「カラムインデックス」を参照してください。
"プリフィクス長"とは、以下の CREATE TABLE文の(128)部分のことです。
(128)
sql1CREATE TABLE tbl ( 2 item TEXT, 3 INDEX (item(128)) 4);
sql
1CREATE TABLE tbl ( 2 item TEXT, 3 INDEX (item(128)) 4);
http://sqlfiddle.com/#!9/ffadd/2
ちなみに、プリフィックス長は(バイト数ではなく)文字数で指定します。 https://dev.mysql.com/doc/refman/5.6/ja/column-indexes.html
注記 プリフィクスの制限はバイト単位で測定されますが、CREATE TABLE ステートメントでのプリフィクス長は文字数で解釈されます。複数バイト文字セットを使用するカラムのプリフィクス長を指定する場合はこれを考慮してください。
投稿2017/01/19 08:10
総合スコア4791
itemのハッシュ値(できれば整数型)を格納するカラムを作り、それにインデックスを張ってはいかがですか。 格納するときにも問い合わせる際にもハッシュ値を生成するのはアプリ側です。
投稿2017/01/19 07:44
総合スコア5570
なんとも言えませんが、100文字程度の文字列で完全一致をねらっているなら varcharにしておけばよいような気がしますが何か問題があるのでしょうか?
投稿2017/01/19 12:22
総合スコア118145
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
MySQL : 日本語の完全一致を高速にSELECTするには?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。