%うどん
「うどん。で終わるデータを探せ」
%うどん%
「うどんが入っているデータを探せ。前に何がついていようがいまいが、後ろがどうだろうがともかくうどんが入ってればいい」
グーグルはじめ「キーワード検索」というのは後者を指す
フルスキャンをする必要があるのでデータに負荷がかかる
SELECT menu,price,cat FROM foods,cats WHERE cats.c_id = foods.c_id
AND menu LIKE "%うどん%"
うどん%
頭が確定していると一番検索は速いらしい
あたまに任意の文字があるとフルスキャンになる
けーたいそかいせきの問題?
自然言語(キーワード検索で入力された冗長な文章)を単語に分解する
係り受けで日本語を解析してジャストシステムさんはうまい変換を提供したらしい
SELECT menu,price,cat
FROM foods,cats
WHERE cats.c_id=foods.c_id
AND menu LIKE "%そば"
foodsテーブルのmenuに「インデックス」をつけておくと検索がはやくなるらしい
まあどうでもいいけど
**02
構造→menuにチェック→左下のインデックスをえらぶ
ただし
あたまにワイルドカードがあるとインデックスが利用できない。らしい。
文字列のなかに%を記述するように。
つまりダブルコートのなかに%を記述しますよ。
どんぶりで600円未満の抽出
そのまえに
かつ丼を「かつどん」に修正するよ
修正したら条件を記述
SELECT menu,price
FROM foods
WHERE menu LIKE "%どんぶり"
AND price < 600
カラム名が先らしい
いま分かった。
・WHERE文はおそらく省略できない
・WHERE文を複数記述したいときにはじめてANDをつかう
・だからFROM句のつぎにANDがくることがありえないのだとおもう
SELECT menu,price
FROM foods
WHERE price < 600
AND menu LIKE "%どんぶり"
やっぱりな。この記述でもいい↑
「2つの条件があるときはじめてANDでつなぐので、AND文は常に最終行に記述される」ようだ。