我的MariaDB慢查询日志显示了下面的很多。
Time: 221202 11:46:57
Query_time: 5.022055 Lock_time: 0.000082 Rows_sent: 5 Rows_examined: 447119
Rows_affected: 0 Bytes_sent: 141
SELECT SQL_CALC_FOUND_ROWS ab_posts.ID
FROM ab_posts LEFT JOIN ab_postmeta ON ( ab_posts.ID = ab_postmeta.post_id AND ab_postmeta.meta_key = 'cid' ) LEFT JOIN ab_postmeta AS mt1 ON ( ab_posts.ID = mt1.post_id )
WHERE 1=1 AND (
ab_postmeta.post_id IS NULL
AND
mt1.meta_key = '_json_file'
) AND ab_posts.post_type = 'listings' AND ((ab_posts.post_status = 'publish'))
GROUP BY ab_posts.ID
ORDER BY ab_posts.post_date DESC
LIMIT 0, 5;
如何加快查询速度?是否应该创建索引来加快查询速度?
UPDATE:下面是两个表的EXPLAIN
查询和索引- ab_post_ meta和ab_posts
更新:我想我找到了源代码。查询是由WordPress核心文件wp-includes\class-wp-query.php
生成的
$found_rows = '';
if ( ! $q['no_found_rows'] && ! empty( $limits ) ) {
$found_rows = 'SQL_CALC_FOUND_ROWS';
}
$old_request = "
SELECT $found_rows $distinct $fields
FROM {$wpdb->posts} $join
WHERE 1=1 $where
$groupby
$orderby
$limits
";
1条答案
按热度按时间tkqqtvp11#
我想我找到了罪魁祸首。答案是解释here。
我有一个如下的 meta_query。