最適 SQL 文・・・・・あれ?
ちょっと最適な SQL 文が分からなくなってしまいました。
・・・あれ?
テーブルは以下。
==
create table word_table(
word_id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
word VARCHAR(64),
length INTEGER NOT NULL
);
==
これで ある文字列の ID を知りたいのですが。
「select word_id from word_table where word = ‘%s’ 」として、これを高速化したいのです。文字数が多くて一文字づつの判定は遅すぎる。
#インデックスは後述の理由で貼っていません。
DB は MySQL です。
そもそも、高速化のために length(文字列長)カラムを追加したのですが、それはあってます?
で、「select word_id from (select * from word_table where length = %d ) where word = ‘%s’ 」は MySQL ではNG。となるとこれは「select word_id from word_table where length = %d and word = ‘%s’」と同じでしょうか。うーん、なにかを勘違いしているのか、ちょっと SQL が分からなくなってしまいました。これくらいの最適化、MySQL 自身がやってないのでしょうか?
先もちらっと書きましたが、そもそもこのテーブルには word にインデックスをつけています。しかし、文字情報の初回生成時は文字列を追加していくので、インデックスを張っているせいかなにしろ遅い!のです。その対策として、全ての文字情報のインサートが終わってから ALTER TABLE 文でインデックスを貼ってやろうと思っているのですが。。。。
最適 SQL 文(DB テーブル構成?)、分かる方教えてください!!!!
金一封、あるかもです!!!!!
#次回の呑み会で支払います^^










