Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL大查询调优_Php_Mysql_Sql_Wordpress - Fatal编程技术网

Php MySQL大查询调优

Php MySQL大查询调优,php,mysql,sql,wordpress,Php,Mysql,Sql,Wordpress,另一个开发人员给了我下面的MySQL查询,它非常慢,我尝试通过指定列而不是*来调整它,并使用一个between语句而不是lengthy IN语句,但它仍然非常慢 我将感谢任何帮助,我如何可以得到一个更快的页面加载从这个 背景:代码用于wordpress页面,该页面列出在指定日期内可用的属性 SELECT DISTINCT(wposts.ID), wposts.*, wpostmeta5.meta_value as 'calendar' FROM DvCs_posts wposts LEFT

另一个开发人员给了我下面的MySQL查询,它非常慢,我尝试通过指定列而不是*来调整它,并使用一个between语句而不是lengthy IN语句,但它仍然非常慢

我将感谢任何帮助,我如何可以得到一个更快的页面加载从这个

背景:代码用于wordpress页面,该页面列出在指定日期内可用的属性

SELECT DISTINCT(wposts.ID), wposts.*, wpostmeta5.meta_value as 'calendar' 
FROM DvCs_posts wposts 
LEFT JOIN DvCs_postmeta wpostmeta5 ON ( wposts.ID = wpostmeta5.post_id AND wpostmeta5.meta_key = 'calendar' ) 
INNER JOIN DvCs_bookingtypes bookingtypes ON ( wpostmeta5.meta_value = bookingtypes.booking_type_id ) 
LEFT JOIN DvCs_term_relationships tr ON ( wposts.ID = tr.object_id AND tr.term_taxonomy_id = 1 ) 
WHERE wposts.post_type = 'post' 
AND(
SELECT tt.term_id FROM DvCs_term_taxonomy tt WHERE tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.term_id = 1 ) IS NULL 
AND (
   ( SELECT booking_id FROM DvCs_bookingdates bd2 WHERE bd2.booking_id IN ( (SELECT booking_id FROM DvCs_booking bookings WHERE bookings.booking_type = bookingtypes.booking_type_id ) ) AND bd2.booking_date BETWEEN '2014-06-27' and '2014-06-28' LIMIT 1 ) IS NULL 
OR ( SELECT booking_id FROM DvCs_bookingdates bd2 WHERE bd2.booking_id IN ( (SELECT booking_id FROM DvCs_booking bookings WHERE bookings.booking_type = bookingtypes.booking_type_id ) ) AND bd2.booking_date BETWEEN '2014-07-04' and '2014-07-10' LIMIT 1 ) IS NULL 
OR ( SELECT booking_id FROM DvCs_bookingdates bd2 WHERE bd2.booking_id IN ( (SELECT booking_id FROM DvCs_booking bookings WHERE bookings.booking_type = bookingtypes.booking_type_id ) ) AND bd2.booking_date BETWEEN '2014-07-11' and '2014-07-17' LIMIT 1 ) IS NULL 
OR ( SELECT booking_id FROM DvCs_bookingdates bd2 WHERE bd2.booking_id IN ( (SELECT booking_id FROM DvCs_booking bookings WHERE bookings.booking_type = bookingtypes.booking_type_id ) ) AND bd2.booking_date BETWEEN '2014-06-28' and '2014-06-29' LIMIT 1 ) IS NULL 
OR ( SELECT booking_id FROM DvCs_bookingdates bd2 WHERE bd2.booking_id IN ( (SELECT booking_id FROM DvCs_booking bookings WHERE bookings.booking_type = bookingtypes.booking_type_id ) ) AND bd2.booking_date BETWEEN '2014-07-05' and '2014-07-11' LIMIT 1 ) IS NULL 
OR ( SELECT booking_id FROM DvCs_bookingdates bd2 WHERE bd2.booking_id IN ( (SELECT booking_id FROM DvCs_booking bookings WHERE bookings.booking_type = bookingtypes.booking_type_id ) ) AND bd2.booking_date BETWEEN '2014-07-12' and '2014-07-18' LIMIT 1 ) IS NULL
) 
AND wposts.post_status = 'publish' 
AND wposts.id NOT IN
(
SELECT ID FROM DvCs_posts p 
INNER JOIN DvCs_term_relationships r ON p.id = r.object_id 
INNER JOIN DvCs_term_taxonomy t ON r.term_taxonomy_id = t.term_taxonomy_id 
WHERE p.post_type = 'post' 
AND p.post_status = 'publish' 
AND t.term_id = 29
)
ORDER BY RAND()

你能提供一些表格结构和样本数据吗?这对于理解瓶颈在哪里以及瓶颈是什么非常有用?您是否也可以共享
EXPLAIN EXTENDED
输出?EXPLAIN select distict。。。关于查询呢?慢的部分都是在WHERE中选择的。