Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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
Mysql查询执行时间很长_Mysql - Fatal编程技术网

Mysql查询执行时间很长

Mysql查询执行时间很长,mysql,Mysql,下面是我从各个表中获取信息的查询 我正在使用mysql数据库 $sql="select c.cid,c.id,c.compid, c.firstname,c.lastname,c.phone,c.home_phone,c.payment,c.status,c.pstatus, c.pstatus2, c.reservation, u.triptype,u.flight_type_arr, u.flight_type_dep, c.email,c.sugg_pickup_date_time,c.

下面是我从各个表中获取信息的查询

我正在使用mysql数据库

 $sql="select c.cid,c.id,c.compid, c.firstname,c.lastname,c.phone,c.home_phone,c.payment,c.status,c.pstatus, c.pstatus2, c.reservation, u.triptype,u.flight_type_arr, u.flight_type_dep, c.email,c.sugg_pickup_date_time,c.sugg_airport_pickup_time,u.triptype,u.traveltype,            
            dr_arr.driver_name as driver_name_arr, dr_arr.driver_email as driver_email_arr, 
            dr_dep.driver_name as driver_name_dep, dr_dep.driver_email as driver_email_dep,
            ar.rid,ar.finalprice1, ar.finalprice2, ap.p1, ap.p2, ap.p3, ap.transaction_id
            from customer c
            left join vehicle_fees vf1 on (vf1.vehicle_id=c.vehicle_id1)
            left join vehicle_fees vf2 on (vf2.vehicle_id=c.vehicle_id2)
            left join userinfo u on (u.id=c.id)
            left join holiday_fees hf1 on (hf1.holidayfee_Date=u.date)
            left join holiday_fees hf2 on (hf2.holidayfee_Date=u.date1)
            left join airport_reservation ar on (ar.cid = c.cid)
            left join driver dr_arr on (dr_arr.did = ar.did_arr)
            left join driver dr_dep on (dr_dep.did = ar.did_dep)
            left join airport_payment ap on (ap.cid = c.cid)
            where (c.reservation = 'booked' or c.reservation = 'cancelled') ORDER BY c.cid DESC" .$var_limit;
但这需要更多的时间来执行


有人能建议我的查询是错误的还是正确的吗?

这个查询看起来是合法的,我看到的问题是它没有限制。通常,您应该在查询脚本的末尾放一条LIMIT语句,以限制要获取的行数。我想知道有多少条记录。

当像您这样做时——一个主表(Customers)正在连接到所有其他“可选”表,有时我发现MySQL试图为您着想,并在内部重新构造它认为是主表的表。使用已知的特殊关键字可能会有所帮助

from: 
    SELECT (rest of query)
to:
    SELECT STRAIGHT_JOIN (rest of query)

现在,对于where子句和orderby。确保(预订、cid)上有索引。

显示“解释选择”输出。此查询速度慢是很正常的!它使用10个连接。。我确信一些(全部?!)表没有索引。为了更好地帮助您,您应该为我们提供表结构和声明的索引。不,没有更多信息,您不能说“查询看起来合法”。仅仅因为它没有语法错误并不意味着它是合法的。而
限制
并不能神奇地解决问题。这个家伙,不会出现任何错误,只是加载缓慢,这意味着他有优化问题,比如太多的数据。是的,他要求优化,而仅仅设置
限制
并不是真正的优化。所以你的观点实际上是没有用的。你是一个巨魔,你根本没有提供任何帮助,如果我给了你一个好的建议,你为什么要和我打架,这可能满足他的要求。因为提供的信息是不可能的。看到已经有了一个答案,而且这个答案也有投票权,这可能会阻止其他人看一看这个问题。所以实际上你的帖子对OP的危害比其他任何东西都大。