Это вопрос о SQL Server 2008 R2
Я не являюсь администратором баз данных. Я разработчик Java, который должен время от времени писать SQL. (в основном встроенный в код). Я хочу знать, сделал ли я что-то неправильно здесь, и если да, то что я могу сделать, чтобы это не повторилось.
Q1:
SELECT something FROM (SELECT * FROM T1 WHERE condition1) JOIN ...
Q1 имеет 14 соединений
Q2 - это то же самое, что и Q1, за одним исключением. (SELECT * FROM T1 WHERE condition1) выполняется до и хранится в таблице temp.
Это не коррелированный подзапрос.
2:
SELECT * INTO #tempTable FROM T1 WHERE condition1
SELECT something FROM #tempTable JOIN ...
снова, 14 соединений.
То, что меня озадачивает сейчас, - это то, что Q1 взял > 2min (несколько раз попробовал его, чтобы избежать кеширования, чтобы играть роль), а Q2 (оба вместе взятых) заняли 2 секунды!!! Что дает?