..


Sponsoroidut linkit

Optimoimalla T-SQL komentosarjan SQL Server

Artikkelin kirjoittanut Vincenzo Gaglio
Sivu 4 4

Ensimmäinen ratkaisu on käyttää Osallistu kyselyyn suoraan, uudelleenkirjoitus seuraavasti






 SELECT PC.LastName +''+ PC.FirstName [Asiakkaan nimi]



      



 , SC.CustomerType







 FROM Sales.Customer SC







 LEFT ulkoliitos KYLLÄ Sales.Individual







 ON = SC.CustomerID SI.CustomerID







 LEFT ulkoliitos Person.Contact PC







 ON = SI.ContactID PC.ContactID



Tässä toisessa versiossa en yksinkertaisesti käyttää taulukoita toiminto GetName asetat ne FROM lauseke. Olen myös korvata funktiokutsun GetName luetteloon sarakkeita SELECT suoraan yhdistämällä kaksi saraketta Yhteystiedot taulukkoon.

Tässä mitä kuvaus kertoo suorittaminen kysely

Kuten näette huolimatta lukuisista kehotuksista edellinen versio kyselyn, uusi versio on yksi puhelu mikä tietysti tarkoittaa, iso säästö suorituskyvyn.

Katsotaanpa nyt, mitä tapahtuu muuntamalla alkuperäinen skalaari toiminto GetName on funktio, joka palauttaa taulukon sijasta (inline taulukko). Luo ensin toiminto ja denominiamola GetNameTable






 CREATE FUNCTION GetNameTable (@ Asiakastunnus int)







 PALAUTUS TAULUKKO







 AS

 





 (RETURN



  



 SELECT Sukunimi + "," + Etunimi [Asiakkaan nimi]



  



 FROM Sales.Customer SC



  



 LEFT ulkoliitos KYLLÄ Sales.Individual



  



 ON = SC.CustomerID SI.CustomerID



  



 LEFT ulkoliitos Person.Contact PC



  



 ON = SI.ContactID PC.ContactID

 

  



 WHERE Asiakastunnus = @ SC.CustomerID



 



 )



Kuten näette kyselyn että otteet data on sama kuin skalaari toiminnon GetName, ainoa ero on, että funktio palauttaa taulukon GetNameTable sijaan varchar arvosta. Voit käyttää tätä uutta ominaisuutta hän käyttää on tarpeen käyttää CROSS KOSKE operaattori seuraavasti






 SELECT I. [Asiakkaan nimi]



      



 , SC.CustomerType







 FROM Sales.Customer SC







 CROSS KOSKE GetNameTable (SC.CustomerID)



Tällöin tuloksena Seuraavat Profiler

Otetaan viimeinen esimerkki siitä, miten kirjoittaa alkuperäisen kyselyn tehokkaammin. Tällä kertaa luomme ja käyttää seuraavia näkymä






 CREATE VIEW View_GetName







 AS



  



 SELECT Sukunimi + "," + Etunimi [Asiakkaan nimi]



        



 , SC.CustomerID

 

  



 FROM Sales.Customer SC



  



 LIITY Sales.Individual



  



 ON = SC.CustomerID SI.CustomerID



  



 LIITY Person.Contact PC



  



 ON = SI.ContactID PC.ContactID







 GO



Tämän perusteella View voimme kirjoittaa kyselyn seuraavasti






 V. SELECT [Asiakkaan nimi]

 

      



 , CustomerType







 FROM Sales.Customer SC







 LEFT ulkoliitos View_GetName V







 ON SC.CustomerID Asiakastunnus = R.



Tällöin tuloksena Profiler on sama kuin kahden edellisen esimerkkiä. Nämä kolme esimerkkiä vastaavat vaikka esitellä pieniä eroja suorituskyvyssä. Tehokkain lähestymistapa on CROSS JOIN mikä hieman pienempi suorittimen käyttöä (voit nähdä tiedot Profiler).

Nämä esimerkit tuodaan esille, että käyttö skalaarifunktioita luettelossa sarakkeet SELECT tai WHERE on tehoton käytäntö. Kielteisiä vaikutuksia tästä käytännöstä on suoraan verrannollinen tietomäärän poimittuja kyselyitä käytetään. Kun käytetään tällä tavoin, skalaarifunktioita käyttäytyä kuin osoitin, joka on toistuvasti vaatinut, ja sitten painaa alas Kehitämme ohjeita. Jos siis käytetty joissakin kyselyt pidetään skalaarifunktioita kirjoittaa sama yhdessä ehdotettua vaihtoehtoa.

(Artikkeli jatkuu alla ...)

Samat kuin tässä artikkelissa ovat vain joitakin mahdollisia toimenpiteitä parantaakseen suorituskykyä t-SQL-kyselyjä ja muita hyödyllisiä laitteita keskustellaan tulevissa artikkeleissa.

Samassa luokassa ...
E-Learning
MS Access Course MS Access Course
Opettele luoda ja hallita tietokantoja helposti ja nopeasti. Alkaen 29 €.
Kurssin MySQL Kurssin MySQL
Hallinta avoimen lähdekoodin tietokanta. Alkaen 39 €.
Opiskelun avuksi ja SQL Opiskelun avuksi ja SQL
Luominen ja hallinta relaatiotietokantojen. Alkaen 39 €.
Sponsoroidut linkit