私はテーブルを持っていて、カラムの1つはTEXTタイプです。私は与えられた文字列に似たテキストを持つ行をテーブルから検索する必要があります。MySQL:クエリで始まるTEXTフィールドで行を検索する
文字列がかなり長い(10000バイトと言えば)ので、私は文字列の最初の20バイトだけを比較するのに十分であると判断しました。私は入れ
SELECT * FROM `table` WHERE STRCMP(SUBSTRING(`description`,0,20),'string_to_compare') = 0
または
SELECT * FROM `table` WHERE `description` LIKE 'string_to_compare%')
注:
KEY `description` (`description`(20))
だから私は今、何をしたいのか、次のクエリのいずれかです。私は、キーを作成し速く、この検索を実行するにはの末尾に1つしかパーセント記号がありませんstring_to_compare私は最初のバイトだけを比較したいとDBに言っています。
私は、MySQLの頭脳がキーを使用して余分な動きをしないことを願っています。
質問:
- クエリが優れている任意の違いはありますか? DBエンジン(MyISAM)がより分かりやすくなるように、私は個人的には2番目を好みます。
- MyISAMがこれらのクエリに効率的なコードを作成するのは正しいですか?
- PDOのprepare文に '%'を挿入するにはどうすればよいですか?
SELECT * FROM table WHERE description LIKE ":text%"
?
MyISAMが死にそうです。それを使用しないでください。 –
ありがとう、@RickJames –