首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单页Wordpress慢SQL查询

单页Wordpress慢SQL查询
EN

Stack Overflow用户
提问于 2020-10-14 14:23:15
回答 1查看 41关注 0票数 0

我有一个工作搜索框,它使用以下jobs查询在自定义帖子类型- SQL中进行搜索:

代码语言:javascript
复制
SELECT ID
FROM wp_posts AS posts INNER JOIN
     wp_postmeta AS postmeta
     ON postmeta.post_id = posts.ID
 WHERE post_type='job' AND post_status='publish' AND
       ((postmeta.meta_key = 'jobsearch_field_job_posted_by' AND
         postmeta.meta_value IN (1640,2764,11487,11783,24831,24985,33113,39346,40194,41158,43157,44307,45447)
        ) OR
        (posts.post_title LIKE '%Con%')
       );

这个查询有时会非常快,比如在一秒内,但有时它会在3秒内给出结果。

以下是解释计划:

代码语言:javascript
复制
+------+-------------+----------+------+--------------------------+------------------+---------+---------------------+------+-----------------------+
| id   | select_type | table    | type | possible_keys            | key              | key_len | ref                 | rows | Extra                 |
+------+-------------+----------+------+--------------------------+------------------+---------+---------------------+------+-----------------------+
|    1 | SIMPLE      | posts    | ref  | PRIMARY,type_status_date | type_status_date | 164     | const,const         | 2897 | Using index condition |
|    1 | SIMPLE      | postmeta | ref  | post_id,meta_key         | post_id          | 8       | afkmgfwugp.posts.ID | 20   | Using where           |
+------+-------------+----------+------+--------------------------+------------------+---------+---------------------+------+-----------------------+

如何优化此SQL查询?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-14 19:54:28

我建议将这段代码编写为union all

代码语言:javascript
复制
SELECT p.ID
FROM wp_posts p
WHERE p.post_type = 'job' AND p.post_status = 'publish' AND
      p.post_title LIKE '%Con%'
UNION ALL
SELECT p.ID
FROM wp_posts p INNER JOIN
     wp_postmeta pm
     ON pm.post_id = p.ID
WHERE p.post_type = 'job' AND p.post_status = 'publish' AND
      p.post_title NOT LIKE '%Con%' AND
      pm.meta_key = 'jobsearch_field_job_posted_by' AND
      pm.meta_value IN (1640, 2764, 11487, 11783, 24831, 24985, 33113, 39346, 40194, 41158, 43157, 44307, 45447);

我建议您在wp_posts(post_type, post_status, post_title)上使用索引。在wp_postmeta(meta_key, meta_value, post_id)上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64347682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档