10. ちょっと寄り道:JOINは遅いのか?
• Nested loop joinアルゴリズム
– http://dev.mysql.com/doc/refman/5.6/en/nested-loop-joins.html
for each row in t1 matching range {
for each row in t2 matching reference key {
for each row in t3 {
if row satisfies join conditions,
send to client
}
}
}
• t1でフェッチされるレコード数×t2でフェッチされるレコード数×t3でフェッチされ
るレコード数のループになる
• 逆に言えばそれぞれのテーブルでフェッチされるレコード数が少なければJOINは
遅くはない
• JOINは適切に使えば有用
• DB分割に対応しにくくなる、つまりスケーラビリティの確保の面からWeb業界では
JOIN禁止というところもある