这里是查询什么需要12秒
SELECT SQL_CALC_FOUND_ROWS DISTINCT `t`.* FROM `wp_pods_bars` AS `t`
LEFT JOIN `wp_podsrel` AS `rel_city` ON
( `rel_city`.`field_id` = 13918 AND `rel_city`.`item_id` = `t`.`id` ) OR
( `rel_city`.`related_field_id` = 13918 AND `rel_city`.`related_item_id` = `t`.`id` )
如果我这样做
SELECT SQL_CALC_FOUND_ROWS DISTINCT `t`.* FROM `wp_pods_bars` AS `t`
LEFT JOIN `wp_podsrel` AS `rel_city` ON
( `rel_city`.`field_id` = 13918 AND `rel_city`.`item_id` = `t`.`id` )
hoặc
SELECT SQL_CALC_FOUND_ROWS DISTINCT `t`.* FROM `wp_pods_bars` AS `t`
LEFT JOIN `wp_podsrel` AS `rel_city` ON
( `rel_city`.`related_field_id` = 13918 AND `rel_city`.`related_item_id` = `t`.`id` )
每个查询运行 0.09 秒。为什么会这样以及如何解决这个问题?
biên tập:
EXPLAIN SELECT SQL_CALC_FOUND_ROWS DISTINCT `t`.* FROM `wp_pods_bars` AS `t`
LEFT JOIN `wp_podsrel` AS `rel_city` ON
( `rel_city`.`related_field_id` = 13918 AND `rel_city`.`related_item_id` = `t`.`id` )
kết quả
id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra
1,SIMPLE,t,ALL,NULL,NULL,NULL,NULL,1340,Using temporary
1,SIMPLE,rel_city,ref,rel_field_rel_item_idx,rel_field_item_idx,rel_field_rel_item_idx,14,const,barchick.t.id,1,Using index; Distinct
第二个
EXPLAIN SELECT SQL_CALC_FOUND_ROWS DISTINCT `t`.* FROM `wp_pods_bars` AS `t`
LEFT JOIN `wp_podsrel` AS `rel_city` ON
( `rel_city`.`related_field_id` = 13918 AND `rel_city`.`related_item_id` = `t`.`id` )
kết quả
id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra
1,SIMPLE,t,ALL,NULL,NULL,NULL,NULL,1340,Using temporary
1,SIMPLE,rel_city,ref,rel_field_rel_item_idx,rel_field_item_idx,rel_field_rel_item_idx,14,const,barchick.t.id,1,Using index; Distinct
Tôi là một lập trình viên xuất sắc, rất giỏi!