簡體   English   中英

困難的mysql查詢wordpress

[英]difficult mysql query wordpress

您能幫我寫一個困難的查詢來計算wordpress上的計數帖子嗎?

情況是這樣的:

  • WordPress網站上有一個廣告系統,可以搜索(過濾)。

  • 主頁顯示所有類別的列表,以及每個類別中的廣告數量。

  • 用戶以城市,廣告類型和關鍵字的形式輸入。 他可以輸入所有參數或僅輸入其中之一。
  • 該腳本應顯示每個類別中的廣告數量。

我的腳本可以運行,但是非常慢。

<?php

 $querystr = "SELECT *  FROM $wpdb->posts
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
WHERE (wp_term_taxonomy.term_id = ".$category->cat_ID." AND wp_term_taxonomy.taxonomy = 'category'
AND wp_posts.post_type = 'post'
AND wp_posts.post_status = 'publish')";

$pageposts = $wpdb->get_results($querystr, OBJECT);

$count=0;
foreach($pageposts as $post) { 
setup_postdata($post); 

$today = date('Y-m-d H:i:S');

$validity = get_post_meta($post->ID, 'valid_until', true);

$city = get_post_meta($post->ID, 'post_location', true);

$action = get_post_meta($post->ID, 'post_action', true);


$cities = explode("|", $city);

$session_city = $_SESSION["session_city"];

if($_SESSION["session_city"] and !$_SESSION["session_action"] or $_SESSION["session_action"]=='All') {
    if($validity >= $today and in_array($session_city, $cities)) { $count++;}
}

if($_SESSION["session_action"] and !$_SESSION["session_city"] or $_SESSION["session_city"]=='All') {
    if($validity >= $today and $action == $_SESSION["session_action"]) { $count++;}
}

if($_SESSION["session_action"] and $_SESSION["session_city"]) {
    if($validity >= $today and $action == $_SESSION["session_action"] and in_array($session_city, $cities)) { $count++;}
}

if(!isset($_SESSION["session_city"]) and !isset($_SESSION["session_action"])) {
    if($validity >= $today) { $count++;}
}


}

echo $count;

?>
wp_term_taxonomy needs INDEX(taxonomy, term_id)
wp_term_relationships needs INDEX(term_taxonomy_id, object_id)

請提供SHOW CREATE TABLE wp_term_relationships ; 我懷疑它不是最佳定義。 (我認為這是其他兩個表之間的多對多關系嗎?)

如果可能,提供EXPLAIN SELECT ...

關於建立索引的食譜

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM