sql >> Database >  >> RDS >> Sqlserver

Heeft de SQL JOIN-volgorde invloed op de prestaties?

De samenvoegvolgorde in de SQL2008R2-server heeft ontegensprekelijk invloed op de prestaties van query's, met name in query's waarbij er een groot aantal tabel-joins zijn waarbij clausules worden toegepast op meerdere tabellen.

Hoewel de join-volgorde is gewijzigd in optimalisatie, probeert de optimizer niet alle mogelijke join-orders. Het stopt wanneer het vindt wat het als een werkbare oplossing beschouwt, aangezien alleen al de optimalisatie kostbare bronnen gebruikt.

We hebben gezien dat query's die als honden presteerden (1 min + uitvoeringstijd) neerkwamen op sub-seconde prestaties door de volgorde van de join-expressies te wijzigen. Houd er echter rekening mee dat dit queries zijn met 12 tot 20 joins en waar-clausules op verschillende tabellen.

De truc is om uw volgorde in te stellen om de query-optimizer te helpen erachter te komen wat logisch is. Je kunt Force Order gebruiken, maar dat kan te rigide zijn. Probeer ervoor te zorgen dat uw join-volgorde begint met de tabellen waar de gegevens het meest worden verminderd door waar-clausules.



  1. Postgresql repareren na upgrade naar OSX 10.7 Lion

  2. Hoe maak je een nieuwe database aan met de hstore-extensie al geïnstalleerd?

  3. Hoe de n-de rij in een SQL-databasetabel te selecteren?

  4. Hoe voeg ik een byte [] in een SQL Server VARBINARY-kolom in?