我下面的查询非常慢,请告诉我原因是什么

问题描述

||
SELECT cm.course_id,xu.full_path,xu.file_name,xu.file_id,xu.virtual_server
FROM cms_doc.xyf_urls xu
LEFT JOIN bb_bb60.course_main cm ON xu.full_path LIKE \'/courses/\' ||
cm.course_id OR xu.full_path LIKE \'/courses/\' || cm.course_id || \'%\'
WHERE xu.full_path NOT LIKE \'/orgs%\'
AND xu.full_path NOT LIKE \'/institution%\'
AND xu.full_path NOT LIKE \'/library%\'
AND xu.full_path NOT LIKE \'/internal%\'
AND xu.full_path NOT LIKE \'/user%\'
ORDER BY cm.course_id 
    

解决方法

之所以缓慢,是因为所有ѭ1都存在,特别是作为
JOIN
的一部分。     ,首先,确保在
xu.full_path
上有一个索引。 其次,两个“ 4”条件之一似乎是多余的。尝试使用此:
SELECT cm.course_id,xu.full_path,xu.file_name,xu.file_id,xu.virtual_server
FROM cms_doc.xyf_urls xu
  LEFT JOIN bb_bb60.course_main cm
    ON xu.full_path LIKE \'/courses/\' || cm.course_id || \'%\'
WHERE xu.full_path NOT LIKE \'/orgs%\'
  AND xu.full_path NOT LIKE \'/institution%\'
  AND xu.full_path NOT LIKE \'/library%\'
  AND xu.full_path NOT LIKE \'/internal%\'
  AND xu.full_path NOT LIKE \'/user%\'
ORDER BY cm.course_id