Wordpress内でアラートを設定して、ユーザーがアラートを作成できるようにしようとしています。これにより、作成された新しい投稿(プロパティ)が設定された基準(アラート)に一致したときに通知が届きます。私の計画は、プロパティ用とアラート用の2つの投稿タイプを使用してこれを行うことでした。次に、プロパティの投稿が保存されると、次のクエリ例が実行されます。
SELECT
post_author
FROM
wp_posts
INNER JOIN wp_postmeta m1
ON wp_posts.ID = m1.post_id
AND m1.meta_key = 'a_property_type'
AND m1.meta_value = 'flat'
INNER JOIN wp_postmeta m2
on wp_posts.ID = m2.post_id
AND m2.meta_key = 'a_bedrooms_min'
AND m2.meta_value <= '2'
INNER JOIN wp_postmeta m3
on wp_posts.ID = m3.post_id
AND m3.meta_key = 'a_bedrooms_max'
AND m3.meta_value >= '2'
INNER JOIN wp_postmeta m4
on wp_posts.ID = m4.post_id
AND m4.meta_key = 'a_bathrooms_min'
AND m4.meta_value <= '2'
INNER JOIN wp_postmeta m5
on wp_posts.ID = m5.post_id
AND m5.meta_key = 'a_bathrooms_max'
AND m5.meta_value >= '2'
INNER JOIN wp_postmeta m6
on wp_posts.ID = m6.post_id
AND m6.meta_key = 'a_garden'
AND m6.meta_value >= '1'
INNER JOIN wp_postmeta m7
on wp_posts.ID = m7.post_id
AND m7.meta_key = 'a_garage'
AND m7.meta_value >= '1'
INNER JOIN wp_postmeta m8
on wp_posts.ID = m8.post_id
AND m8.meta_key = 'a_parking'
AND m8.meta_value >= '1'
INNER JOIN wp_postmeta m9
on wp_posts.ID = m9.post_id
AND m9.meta_key = 'a_double_glazing'
AND m9.meta_value >= '1'
INNER JOIN wp_postmeta m10
on wp_posts.ID = m10.post_id
AND m10.meta_key = 'a_country'
AND m10.meta_value LIKE 'Scotland'
WHERE
wp_posts.post_type = 'alerts'
AND wp_posts.post_status = 'publish'
GROUP BY
wp_posts.ID
ORDER BY
wp_posts.post_date DESC
これは機能し、設定された基準に一致するプロパティを返しますが、LIKEを導入すると、クエリが実際にハングします。デフォルトのWordpressテーブル「wp_posts」と「wp_postmeta」を使用しています。'meta_value'列にインデックスを設定しようとしましたが、'longtext'フィールドであるため、設定できません。
これを行うためのより良い解決策はありますか、それとも私のクエリをより効率的に書くことができますか?
ありがとう