Sql wordpress ajax关系查询

Sql wordpress ajax关系查询,sql,wordpress,Sql,Wordpress,使用高级自定义字段中的关系字段,我将艺术家链接到事件。这些艺术家和活动都是自定义的帖子类型。对于每个事件,相关艺术家的帖子ID都存储在一个数组中,作为一个自定义元字段(lineup_Artisters) 在每个活动页面上,我列出了所有的艺术家。当你点击一个艺术家时,我想显示你能找到这个艺术家的所有事件(通过一个AJAX调用,在引导模式中显示结果)。我已经测试了AJAX调用,它正常工作,但是查询有问题(需要很长时间才能完成) 在我的职能中,我有: $ArtistID = $_POST['Artis

使用高级自定义字段中的关系字段,我将艺术家链接到事件。这些艺术家和活动都是自定义的帖子类型。对于每个事件,相关艺术家的帖子ID都存储在一个数组中,作为一个自定义元字段(lineup_Artisters)

在每个活动页面上,我列出了所有的艺术家。当你点击一个艺术家时,我想显示你能找到这个艺术家的所有事件(通过一个AJAX调用,在引导模式中显示结果)。我已经测试了AJAX调用,它正常工作,但是查询有问题(需要很长时间才能完成)

在我的职能中,我有:

$ArtistID = $_POST['ArtistID']; // Gets the ArtistID from the AJAX call

$meta_query = array(
    'key'       => 'lineup_artists',
    'value'     => '"' . $ArtistID .'"',
    'compare'   => 'LIKE'
);

    $args = array(
        'post_type'         => 'events',
        'meta_query'        => array($meta_query),
        'posts_per_page'    => 5,
        'post_status'       => 'publish',   
);
如果转储wp_查询的结果,将得到以下sql查询:

SELECT SQL_CALC_FOUND_ROWS yt_posts.ID FROM yt_posts 

INNER JOIN yt_postmeta ON (yt_posts.ID = yt_postmeta.post_id)

WHERE 1=1 

AND yt_posts.post_type = 'events' 
AND (yt_posts.post_status = 'publish') 

AND ( (yt_postmeta.meta_key = 'lineup_artists' AND CAST(yt_postmeta.meta_value AS CHAR) LIKE '%\"17497\"%') ) 

GROUP BY yt_posts.ID ORDER BY yt_posts.post_date DESC LIMIT 0, 5
当我在phpmyadmin中粘贴此查询时,它需要很长时间才能完成(我从未见过它完成,因为它需要很长时间)


这是因为艺术家ID存储为数组吗?有人告诉我这不是很有效,这些关系应该存储在一个单独的表中(我不知道怎么做)。我的查询是否有问题,或者这是一种非常低效的查询关系的方法?

这个问题似乎离题了,因为它是关于第三方软件的使用问题,这里就是Wordpress。这里有很多关于Wordpress的问题,特别是关于wp\U查询的问题,对吗?我会在wordpress.stackexchange.com上发布这个问题。甚至在这个网站上,也有很多关于天空颜色或天气的问题。这并不重要,问题是它是否是一个编程问题。更好地查看Wordpress的答案,并请在此处留下您的问题的链接,以便更轻松地简化。在我看来,这似乎是一个编程问题,因为它是关于SQL查询的优化。但无论如何,这个问题升级为一个与WP更相关的问题,所以你是对的:-)。请参阅WP答案上的帖子,我们也会在那里得到更好的答案,因为在该网站上有wordpress的专业版:)