2

だから - 私は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;
4

1 に答える 1