だから - 私は2つのテーブルを持っています:
entries
テーブル:
id - Primary key
meta_keys VARCHAR 20
meta_desc VARCHAR 20
..some other unimportant columns...
headwords
テーブル:
id - Primary key
fk_entries_id - foreign key refers to entries(id)
headword_text VARCHAR(200)
..some other unimportant columns...
そのため、エントリには複数の見出し語が含まれる場合があります - そうです。そのため、見出しに特定の単語が含まれているエントリをページ分けしようとしています。私が思いついた唯一のクエリは、LEFT JOIN と LIKE を必要とし、少し遅いです。
SELECT entries.*, GROUP_CONCAT(DISTINCT headwords.headword_text SEPARATOR ' ') AS hw
FROM entries
LEFT JOIN headwords ON (entries.id = headwords.fk_entries_id)
GROUP BY entries.id
HAVING hw LIKE '%dog%'
LIMIT 20,20;
このアプローチをスピードアップするためのアドバイスを求めています。
EDIT> WAIT - これは間違ったクエリでしょうか?:
SELECT entries.id, GROUP_CONCAT(DISTINCT headwords.headword_text SEPARATOR ' ') AS hw
FROM entries
LEFT JOIN headwords
ON (entries.id = headwords.fk_entries_id)
WHERE headwords.headword_text LIKE 'dog%'
GROUP BY entries.id;