За четливост преструктурирах заявката... започвайки с очевидно най-горното ниво, което е Table1, което след това се свързва с Table3, а след това table3 се свързва с table2. Много по-лесно за следване, ако следвате веригата от връзки.
Сега да отговоря на въпроса ви. Получавате голям брой в резултат на декартово произведение. За всеки запис в Таблица1, който съвпада с Таблица3, ще имате X * Y. Тогава за всяко съвпадение между таблица3 и Таблица2 ще има същото въздействие... Y * Z... Така че вашият резултат само за един възможен идентификатор в таблица 1 може да има X * Y * Z записи.
Това се основава на това, че не знаете как е нормализацията или съдържанието за вашите таблици... дали ключът е ОСНОВЕН ключ или не..
Ex:
Table 1
DiffKey Other Val
1 X
1 Y
1 Z
Table 3
DiffKey Key Key2 Tbl3 Other
1 2 6 V
1 2 6 X
1 2 6 Y
1 2 6 Z
Table 2
Key Key2 Other Val
2 6 a
2 6 b
2 6 c
2 6 d
2 6 e
И така, присъединяването на Таблица 1 към Таблица 3 ще доведе (в този сценарий) до 12 записа (всеки в 1, съединен с всеки в 3). След това всичко това отново, умножено по всеки съвпадащ запис в таблица 2 (5 записа)... общо 60 ( 3 tbl1 * 4 tbl3 * 5 tbl2 ) брой ще бъде върнат.
Така че сега вземете това и разширете въз основа на вашите 1000 записи и ще видите как една объркана структура може да задуши крава (така да се каже) и да убие производителността.
SELECT
COUNT(*)
FROM
Table1
INNER JOIN Table3
ON Table1.DifferentKey = Table3.DifferentKey
INNER JOIN Table2
ON Table3.Key =Table2.Key
AND Table3.Key2 = Table2.Key2