Closed kamipo closed 4 years ago
ループ内の ST_Contains(ST_PolygonFromText(%s), ST_GeomFromText(%s)) のN+1を最大50回までに制限してるけど外側のクエリとまとめて一発にできる。 空間インデックスでさらに効率をあげれるかもしれないけどソート順がrecommended_estateと同じなので #16 で足したインデックスで少なくともフルスキャンは割けられる。 逆にいうと予選時は'/api/recommended_estate/:id'と'/api/estate/nazotte'はフルスキャンだから遅かった。
ST_Contains(ST_PolygonFromText(%s), ST_GeomFromText(%s))
フルスキャンは濡れ衣だった。
https://github.com/soudai/isucon10-qualify/blob/1be06d2540eb94244596e9a7b541f7c4caf4c14f/webapp/mysql/db/0_Schema.sql#L67-L68
https://github.com/soudai/isucon10-qualify/pull/16#issuecomment-691643532
フルスキャンではなかったインデックスはこっち https://github.com/soudai/isucon10-qualify/pull/16#issuecomment-691645178
ループ内の
ST_Contains(ST_PolygonFromText(%s), ST_GeomFromText(%s))
のN+1を最大50回までに制限してるけど外側のクエリとまとめて一発にできる。 空間インデックスでさらに効率をあげれるかもしれないけどソート順がrecommended_estateと同じなので #16 で足したインデックスで少なくともフルスキャンは割けられる。 逆にいうと予選時は'/api/recommended_estate/:id'と'/api/estate/nazotte'はフルスキャンだから遅かった。