JOINで無茶苦茶悩んだのでメモ。やりたかった事は、MySQLで テーブルAには必要最低限のログが格納テーブルBにはカテゴライズ情報が格納AとBを組み合わせてカテゴリー毎に集計したいというもの。 あと難点として、テーブルAは200万件ほどデータが入っていて、尚且つサーバースペックが5年以上前のものらしくあまりよくないらしい。 で、最初に考えた案としては普通にJOINして、結果をWHEREで絞って集計。 SELECT SUM(aaa) FROM table_a AS a LEFT JOIN table_b AS b ON a.aaa = b.bbb WHERE ~~~みたいな感じ。結合のキーは文字列。 1日毎の集計だと問題ないけど月間、年間で集計したら トラフィックがえげつないことになった。 かといってPHPで処理したらメモリ不足でタイムアウトが発生した。 上司に相談したところ、DBの構成を
![MySQLでJOINの高速化 | 勉強したことのメモ](https://cdn-ak-scissors.b.st-hatena.com/image/square/06fff66f3cfa76f320555f52c1ec1ac2cdccda07/height=288;version=1;width=512/https%3A%2F%2Ftaitan916.info%2Fblog%2Fwp-content%2Fuploads%2F2014%2F05%2Fmsyql-image.gif)