0

以下のクエリでは、空間インデックスと主キー (ID) のインデックスが既にあります。それ以外に、以下のクエリを高速化するためにインデックスを設定する方法を知りたいです。場合によっては、クエリが非常に遅くなります (3 秒以上)。高速にする必要があるテーブルでのみ SELECT ステートメントを使用しているため、INSERT に時間がかかることは問題ありません。

2 つの異なるクエリを使用しています。

クエリ 1:

SELECT *

FROM B

LEFT JOIN A AS C
ON B.id = C.id
LEFT JOIN A AS D
ON B.arid = D.id
LEFT JOIN E       
ON B.opid = E.id

WHERE C.type='aa' AND D.type='aa'
AND
MBRWithin(C.lat_lng_point, GeomFromText('Polygon((57.5708387771 -6.08774442528, 54.3332809958 -6.08774442528, 54.3332809958 -0.305217949274, 57.5708387771 -0.305217949274, 57.5708387771 -6.08774442528))'))
AND
MBRWithin(destinationsto.lat_lng_point, GeomFromText('Polygon((50.4721888907 -0.111395950546, 47.2346311093 -0.111395950546, 47.2346311093 4.80899595055, 50.4721888907 4.80899595055, 50.4721888907 -0.111395950546))'))
LIMIT 0, 50

クエリ 2:

SELECT *
FROM (
SELECT (GLength(
LineStringFromWKB(
  LineString(
    lat_lng_point,
    GeomFromText('POINT(55.9520598864937 -3.19648118727903)')
  )
 )
)) 
AS distance 

FROM (
SELECT * FROM A 
WHERE MBRWithin(lat_lng_point, GeomFromText('Polygon((56.2218563683 -3.67835839361, 55.6822634047 -3.67835839361, 55.6822634047 -2.71460398094, 56.2218563683 -2.71460398094, 56.2218563683 -3.67835839361))'))
AND A.type = 'rr'
) AS A

LEFT JOIN B           
ON A.id = B.id
ORDER BY distance ASC, main DESC
) AS t

GROUP BY trid
ORDER BY distance ASC
LIMIT 30

私の質問は次のとおりです。上記のクエリのテーブル インデックスを設定するにはどうすればよいですか?

4

0 に答える 0