0

4 つのテーブルを結合する 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
4

2 に答える 2

0

以下のように内部結合を試してください:

SELECT        s.ACCESS_CODE, a.ACCESS_CODE AS Expr1, MIN(b.ID) AS Expr2, b.NAME, a.USER_ID, b.PARENT_ID, b.UPDATE_TIME
FROM          b_disk_simple_right AS s INNER JOIN
              b_user_access AS a ON s.ACCESS_CODE = a.ACCESS_CODE CROSS JOIN
              b_disk_object AS b CROSS JOIN
              b_file AS f
WHERE        (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
于 2015-08-11T06:57:11.360 に答える
0

まず、この操作が実際にアプリケーションの速度を制限しているかどうかを調べる必要があります。そうでない場合は、おそらく心配する必要はありません。最後に、スキーマやインデックスを変更しないと、それ以上のことを絞り出すことはできません (適切な DB システムは、実行前に最適化してくれます)。

于 2015-08-11T07:02:44.353 に答える