Visbiežāk sastaptā lieta- Where daļa ar OR.
Izskatās tā:
Where (@ID Is Null OR ID = @ID) AND ...Šāds vaicājums būtu jāsadala vairākās daļās ar IF, vai jāizmanto dinamiskais vaicājums (paturot prātā, ka tad var būt jādarbojas ar lietotāju tiesībām). Piemēram:
IF(@ID Is Null)
... Vaicājums
ELSE
... Vaicājums + Where ID = @ID
Otra lieta- tabula bez klasterētā indeksa.
SQL Server ļoti retos gadījumos strādā labāk ja tāda nav. Principā 99.9% varbūtība, ka vajag uzlikt klasterēto indeksu, ja sastopaties ar tabulu kurai tāda nav.Saite ar OR vai Case
Piemēram:table1 t1 Left Join table2 t2 on t1.ID = t2.CitsID OR t1.ID = t2.VelCitsIDRisinājums- veidot vaicājumu ar UNION ALL
Pēdējā laika top raksti
MSDN: When To Break Down Complex QueriesStackoverflow: What are the most common SQL anti-patterns?
Nav komentāru:
Ierakstīt komentāru