【发布时间】:2013-01-05 07:11:19
【问题描述】:
如何通过此查询获得更快的结果?
SELECT
post_id
FROM
wp_postmeta
WHERE
meta_key='wpcf-cooler-name' AND (
post_id IN (
SELECT
post_id
FROM
wp_postmeta
WHERE
meta_key='wpcf-cooler-name' AND
meta_value LIKE '%sosa%' AND (
post_id IN (
SELECT
object_id AS 'post_id'
FROM
wp_term_relationships
WHERE
term_taxonomy_id=227
)
) AND (
post_id IN (
SELECT
ID AS 'post_id'
FROM
wp_posts
WHERE
post_type='cooler' AND
post_status='publish'
)
)
)
) ORDER BY meta_value ASC
我的数据库有超过 15000 个条目。因此,显示结果需要时间。
【问题讨论】:
-
你不能使用 JOIN 代替子查询吗?另外,确保所有相关字段都已编入索引,例如
meta_key、post_id、term_taxonomy_id... -
您需要向我们展示表和索引定义。 诊断慢查询需要完整的表和索引定义,而不仅仅是描述或解释。也许您的表格定义不佳。也许索引没有正确创建。也许您认为您在该列上没有索引。没有看到表和索引定义,我们无法分辨。
-
这看起来很像一堆 WordPress 表和列名?
标签: mysql sql select query-optimization