confronto delle prestazioni di croce SQL Server si unisce con condizionali nella dichiarazione in cui e interno si unisce con condizionali nel join di dichiarazione su

StackOverflow https://stackoverflow.com/questions/1664205

  •  12-09-2019
  •  | 
  •  

Domanda

Sto cercando di determinare le prestazioni di un pezzo di SQL generato che viene eseguito in SQL Server 2005.

Si utilizza cross join, ma i condizionali che legano la croce è unito tabelle sono nella dichiarazione dove.

Ho già pensato che tutto croce join che hanno in cui dichiarazioni sarebbero prima tirare il prodotto cartesiano completo e quindi applicare il filtro.

Tuttavia, questa seguente link sul MSDN suggerisce in modo diverso.

https://msdn.microsoft.com/en-us/library /ms190690.aspx

Si afferma esplicitamente che se c'è un condizionale su un tavolo croce unito, sarà "comportarsi" come un inner join. Si va avanti per mostrare un esempio dei risultati simili di un join interno ed un cross join w / dove condizionale.

E non precisa quali la differenza di prestazioni è, però, solo che si comportano in modo simile.

È stato utile?

Soluzione

The example given is correct, atleast in a basic query. 

La domanda sotto produrrà lo stesso piano di esecuzione e tempi di esecuzione per entrambe le query. Lo Sql Optimiser è in genere libero di muoversi restrizioni tra cui le clausole e 'su' clausole durante le operazioni di join, e immagino che lo stesso è per il cross si unisce.

    select companies.id, contacts.id
from 
companies
cross join contacts
where
contacts.companyid = companies.id


select companies.id, contacts.id
from 
companies
inner join contacts on contacts.companyid = companies.id

Altri suggerimenti

Probabilmente la cosa più semplice da fare è quello di visualizzare il piano di esecuzione per la sua dichiarazione e dare un'occhiata a quello che sta facendo. Puoi farlo da Management Studio - c'è un po 'di informazioni qui:

http://www.sql-server-performance.com/tips /query_execution_plan_analysis_p1.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top