gpt4 book ai didi

mysql - WordPress 自定义选择查询

转载 作者:行者123 更新时间:2023-11-30 23:27:59 24 4
gpt4 key购买 nike

我真的对 MySQL 查询了解不够,而且它正在显示。

我为每个帖子设置了一个自定义字段。自定义字段将帖子源 URL 存储在名为“source_url”的键中。

我让它与下面的 WP_Query 参数一起工作,但是它非常慢。请记住,可以搜索 50 多个网址。

因此,给定一组源 URL,我想获取匹配的帖子。

例如,这是我目前在 WP_Query 中运行缓慢的内容:

// var_dump of $urls array (this could be 50+ urls)
array(7) {
[0]=>
string(42) "http://www.youtube.com/watch?v=FMghvnqDhT8"
[1]=>
string(42) "http://www.youtube.com/watch?v=RY-yUFpXTnM"
[2]=>
string(58) "http://www.youtube.com/watch?v=nIm2dnyJ1Ps&feature=related"
[3]=>
string(42) "http://www.youtube.com/watch?v=NoCtRQlJAqM"
[4]=>
string(57) "http://holidaycustoms.blogspot.com/2012/08/busy-week.html"
[5]=>
string(42) "http://www.youtube.com/watch?v=DcZvg197Ie4"
[6]=>
string(42) "http://www.youtube.com/watch?v=7P3UEbLmLuo"
}

// Build Media Query
$meta_query = array(
'relation' => 'OR'
);
foreach( $urls as $url ) {
$meta_query[] = array(
'key' => 'source_url',
'value' => $url
);
}

// Get 20 matching posts from a category set by a variable
$args = array(
'post_type' => 'post',
'posts_per_page' => 20,
'orderby' => 'rand',
'cat' => $cat_ID,
'meta_query' => $meta_query
);
$posts = get_posts($args);

我要做的是用自定义查询选择替换上面的代码,which I have read is much faster than WP_Query .

但我对 MySQL 或 WP 数据库了解不够,无法构建自定义选择查询。谁能帮忙?提前致谢!

最佳答案

在您自己链接的帖子中,第一个回复已经说明

[...] the default schema doesn't even have an index on the value column

这比使用查询生成器时遇到的问题要严重得多,因为没有索引,DBMS 必须遍历整个表并比较每个字段的字符串。

使用适当的管理工具(如 PHPMyAdmin)添加索引相当容易.您需要添加索引的违规表称为 wp_postmeta,需要索引的字段是 meta_value,索引类型应为 INDEX.

添加索引是透明的,除了性能之外不会影响 wordpress。这可能需要一些时间,因为 MySQL 需要遍历整个表。另外,因为你索引的是字符串数据,索引会很大。


您还应该尝试为您的查询使用适当的结构。您当前正在使用具有不同值但始终相同字段的大型 ORed 选择。为此有一个构造,它称为 IN

...
// Build Media Query
$meta_query = array();
$meta_query[] = array(
'key' => 'source_url',
'value' => $urls,
'compare' => 'IN'
);

// Get 20 matching posts from a category set by a variable
..

(未经测试。我实际上从未这样做过,Reference)

与我假设的添加索引相比,性能提升可以忽略不计,但您的代码会变得简单得多。

关于mysql - WordPress 自定义选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12223822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com