WordPress нестандартный SQL-запрос, слишком тяжелый?

Может ли кто-нибудь помочь мне оптимизировать мой запрос в WordPress?

Код PHP

$serSlugSearchWord = seoUrl($post->post_title);
$serSlugSearchWord_obj = explode("-", $serSlugSearchWord);
foreach ($serSlugSearchWord_obj as $item )
{
$queryStringKeyWords .= " if( INSTR(post_name, '$item')>0 ,1,0) +";
}

$queryStringKeyWords = preg_replace("/\+$/", "", $queryStringKeyWords);
$theQuery = "Select
$queryStringKeyWords
as my_rate,
`wp_posts`.*
from `wp_posts`
WHERE (`post_status` = 'publish' )
AND `post_type` = 'post'
order by my_rate desc limit 0, 10";
global $wpdb;
$wpdb->get_row($theQuery, 'ARRAY_N');

запрос выглядит так (и прекрасно работает)

Select if( INSTR(post_name, 'serengeti')>0 ,1,0) + if( INSTR(post_name, 'adventure')>0 ,1,0) as my_rate, `wp_posts`.* from `wp_posts`
WHERE (`post_status` = 'publish' )
AND `post_type` = 'post'
order by my_rate desc limit 0, 10

и теперь я хочу только сообщения из категории 1 и 5

INNER JOIN wp_term_relationships
ON wp_term_relationships.object_id = ID
AND wp_term_relationships.term_taxonomy_id = 1
OR wp_term_relationships.term_taxonomy_id = 5

но когда я добавляю эти строки в код

Select if( INSTR(post_name, 'serengeti')>0 ,1,0) + if( INSTR(post_name, 'adventure')>0 ,1,0) as my_rate, `wp_posts`.* from `wp_posts`
INNER JOIN wp_term_relationships
ON wp_term_relationships.object_id = ID
AND wp_term_relationships.term_taxonomy_id = 1
OR wp_term_relationships.term_taxonomy_id = 5
WHERE (`post_status` = 'publish' )
AND `post_type` = 'post'
order by my_rate desc limit 0, 10

это разбило мое веб-пространство (сервер). Но почему?

Кстати: этот запрос только для администратора.

0

Решение

(обновлено) вы можете попробовать это? Условие ИЛИ помещается в скобки.

Select if( INSTR(post_name, 'serengeti')>0 ,1,0) + if( INSTR(post_name, 'adventure')>0 ,1,0) as my_rate, `wp_posts`.* from `wp_posts`
INNER JOIN wp_term_relationships
ON wp_term_relationships.object_id = ID
WHERE (`post_status` = 'publish' )
AND `post_type` = 'post'
AND wp_term_relationships.term_taxonomy_id in (1,5)
order by my_rate desc limit 0, 10
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]