【发布时间】:2015-08-11 15:07:55
【问题描述】:
我有一个连接四个表的 SQL 脚本。我正在使用许多AND 操作。有没有办法优化这个脚本?
SELECT s.ACCESS_CODE, a.ACCESS_CODE, MIN(b.ID), b.NAME, a.USER_ID, b.PARENT_ID,b.UPDATE_TIME
FROM b_disk_simple_right s, b_user_access a, b_disk_object b, b_file f
WHERE s.ACCESS_CODE = a.ACCESS_CODE
AND a.USER_ID = '".$userID."'
AND s.OBJECT_ID=b.ID
AND f.ID = b.FILE_ID
AND b.DELETED_BY=0
AND f.MODULE_ID = 'disk'
GROUP BY b.ID
【问题讨论】:
-
只使用
FROM中的一张表,其余使用Joins。 -
这个查询真的很慢吗?
-
这四个表之间是否有任何关系(通过外键或其他方式暗示)?
-
为什么使用 MIN(b.ID) 和 GROUP BY b.ID?这与按规则进行的一般分组相反。 (如果指定了 GROUP BY 子句,则 SELECT 列表中的每个列引用必须标识一个分组列或者是集合函数的参数。)
-
@John,显式 JOIN 语法对性能没有影响。
标签: mysql sql requirejs-optimizer