无法在wordpress query.php中更改查询值

时间:2016-08-25 10:27:05

标签: mysql woocommerce query-optimization woothemes

我的网站有woo商业主题加载速度非常慢特别是产品摘要页面加载需要将近3分钟。现在我想更改产品摘要页面主要查询但无法找到方法以便我能够更改/优化我的query.Query输出值如下所示。我在Query.php中更改$ query但是当我执行页面时,查询没有变化,它显示相同的查询。如果需要任何其他更改,请指导。 query.php中的上一个和新值如下所示。

以前的值

puppet agent -t

新值(想要使用此值而不是上面的值)

$query = $wpdb->prepare("SELECT  post_id
    FROM  $wpdb->postmeta, $wpdb->posts
    WHERE  ID = post_id
      AND  post_type = %s
      AND  meta_key = '_wp_old_slug'
      AND  meta_value = %s",
    $post_type, $wp_query->query_vars['name']);

用于页面数据的查询值

$query = $wpdb->prepare("SELECT post_id
          FROM $wpdb->postmeta, $wpdb->posts
          WHERE ID = post_id" );

实际上我不想在查询中使用以下值。

SELECT SQL_CALC_FOUND_ROWS wp_bkkf_posts.ID
FROM wp_bkkf_posts
INNER JOIN wp_bkkf_postmeta
ON ( wp_bkkf_posts.ID = wp_bkkf_postmeta.post_id )
WHERE 1=1
AND ( ( wp_bkkf_postmeta.meta_key = '_visibility'
AND wp_bkkf_postmeta.meta_value IN ('visible','catalog') ) )
AND wp_bkkf_posts.post_type = 'product'
AND (wp_bkkf_posts.post_status = 'publish'
OR wp_bkkf_posts.post_status = 'private')
GROUP BY wp_bkkf_posts.ID
ORDER BY wp_bkkf_posts.menu_order ASC, wp_bkkf_posts.post_title ASC
LIMIT 0, 12

显示创建表输出如下所示

AND ( ( wp_bkkf_postmeta.meta_key = '_visibility'
AND wp_bkkf_postmeta.meta_value IN ('visible','catalog') ) )
AND wp_bkkf_posts.post_type = 'product'
AND (wp_bkkf_posts.post_status = 'publish'
OR wp_bkkf_posts.post_status = 'private')

如果有人有关于$查询值更改的想法,那么请指导,也请分享其他需要更改的文件名。谢谢。

1 个答案:

答案 0 :(得分:0)

SELECT MAX(CHAR_LENGTH(meta_key)) FROM wp_bkkf_postmeta;

如果小于191,那么请执行以下操作:

ALTER TABLE wp_bkkf_postmeta
    MODIFY `meta_key` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
    DROP KEY `post_id`,
    ADD INDEX pm (post_id, meta_key);

考虑摆脱SQL_CALC_FOUND_ROWS;它可能是一个减速。然而,失去这将失去......"页面上的条款。

如果您丢弃整个WHERE,那么JOINGROUP BY也会消失:

SELECT  SQL_CALC_FOUND_ROWS wp_bkkf_posts.ID
    FROM  wp_bkkf_posts
    ORDER BY  wp_bkkf_posts.menu_order ASC, wp_bkkf_posts.post_title ASC
    LIMIT  0, 12

那会跑得更快。不过,它还需要扫描整个150万行表。为什么你想要那个特定的ORDER BY