soudai / isucon10-qualify

今年こそちゃんと予選突破するんじゃ!!!!!
3 stars 0 forks source link

Avoid N+1 in post '/api/estate/nazotte' #18

Closed kamipo closed 4 years ago

kamipo commented 4 years ago

ループ内の ST_Contains(ST_PolygonFromText(%s), ST_GeomFromText(%s)) のN+1を最大50回までに制限してるけど外側のクエリとまとめて一発にできる。 空間インデックスでさらに効率をあげれるかもしれないけどソート順がrecommended_estateと同じなので #16 で足したインデックスで少なくともフルスキャンは割けられる。 逆にいうと予選時は'/api/recommended_estate/:id'と'/api/estate/nazotte'はフルスキャンだから遅かった。

kamipo commented 4 years ago

フルスキャンは濡れ衣だった。

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

kamipo commented 4 years ago

フルスキャンではなかったインデックスはこっち https://github.com/soudai/isucon10-qualify/pull/16#issuecomment-691645178