Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.
Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.
als je indexeert op de significantste integer (idg dus de integer die gemiddeld de hoogste waarde heeft), kan MSSQL al heel wat voorsorteerwerk verrichten, iets wat je zeker terug zult zien in snellere sorteertijden.
Zonnepaneel installateur
Ja, CREATE INDEX ... ON ...Op woensdag 20 februari 2002 15:16 schreef mOrPhie het volgende:
Stel:
Kan ik nu met behulp van een index de order by sneller krijgen? Zo ja, hoe? Met welke instellingen zou dat het beste gaan?
https://fgheysels.github.io/
Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.
Verwijderd
Alleen Otis zijn oplossing is een hele creatieve oplossing en was ik zelf ook al mee aan het klooien geweest, maar is niet dé manier.
En PjotrP. Hoe gaat mijn index in T-SQL eruit zien dan als ik de significantste eruit wil trekken?
Voor de rest:
Ik weet wel hoe ik indexes maak en weet ook hoe ik ermee om moet gaan. Ik weet alleen niet of een index een ORDER BY sneller zal maken
Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.
Feit dat je niet eens een opmerking maakt over clustered en nonclustered indexes (is SQL2K specifiek) zegt al wel genoeg over je kennis wat betreft indexes onder MSSQL. Ga vooral een clustered index gebruiken als je ook nonclustered indexes hebt. (je kan maar 1 clustered index hebben, indien niet gedefinieerd is dit altijd je primary key)Op woensdag 20 februari 2002 22:15 schreef mOrPhie het volgende:
Voor de rest:
Ik weet wel hoe ik indexes maak en weet ook hoe ik ermee om moet gaan. Ik weet alleen niet of een index een ORDER BY sneller zal maken
Verder is het totale onzin om te proberen je data te sorteren op twee integer waarden middels een index. Zeker als je ze in 1 tabel krijgt middels een (voor zover ik begrijp) table join.
Order by is een ordening van je gegevens. Mocht je 1 of meer waarden uit 1!! tabel willen orderen, dan zou je eventueel op die gegevens een index kunnen zetten om de ordening te versnellen. Vraag is alleen of het echt netto effect zal hebben. SQL2K laat trouwens behoorlijk snel een index zitten en valt terug naar table scans.
Ja.Op woensdag 20 februari 2002 22:15 schreef mOrPhie het volgende:
Ik weet wel hoe ik indexes maak en weet ook hoe ik ermee om moet gaan. Ik weet alleen niet of een index een ORDER BY sneller zal maken
www.sql-server-performance.comIndexes should be considered on all columns that are frequently accessed by the WHERE, ORDER BY, GROUP BY, TOP, and DISTINCT clauses. Without an index, each of these operations will require a table scan of your table, potentially hurting performance.
Keep in mind the word "considered". An index created to support the speed of a particular query may not be the best index for another query on the same table. Sometimes you have to balance indexes to attain acceptable performance on all the various queries that are run against a table. [6.5, 7.0, 2000] Updated 12-7-2001
https://fgheysels.github.io/
Beste kun je kijken in de query analyzer en dan het estimated query plan bekijken, als je die goed interpreteerd zie je zo wat het knelpunt is van je query.
Punt met een order by is dat er gesorteerd moet worden, en sorteren is dus 1 van de duurste operaties die je kan uitvoeren op een computer. Tevens neemt de complexiteit exponentieel toe met het aantal te sorteren waarden. (weet niet de exacte vergelijking hiervoor)
Bedankt voor je heldere input. Ben blij dat er mensen zijn die beter zijn in het over mijn kennis ordelen dan ikzelf, aan de hand van 2 berichtjes in een forumOp woensdag 20 februari 2002 22:32 schreef The - DDD het volgende:
Feit dat je niet eens een opmerking maakt over clustered en nonclustered indexes (is SQL2K specifiek) zegt al wel genoeg over je kennis wat betreft indexes onder MSSQL.
Totale onzin? Dit kan in sommige gevallen juist nodig zijn. In een aantal queries die ik maak is het weldegelijk nodig. Stel dat je een tabel hebt met een veld "omzet" en een veld "afzet". En je wilt sorteren op de totale winst. Je raad het al.Verder is het totale onzin om te proberen je data te sorteren op twee integer waarden middels een index. Zeker als je ze in 1 tabel krijgt middels een (voor zover ik begrijp) table join.
Verder moet ik erbij zeggen dat ik geen joins of iets gebruik. Het is een recht toe recht an query.
Ik heb een descade gesorteerde index gemaakt op die 2 kolommen en ik kreeg een snelheidswinst van 0 komma o. Zelf heb ik nog geen problemen gehad met SQL2K en het laten zitten van indexes. Of SQL2K een index neemt of niet komt puur door het goed indelen van je indexes en de juiste indexes gebruiken.Order by is een ordening van je gegevens. Mocht je 1 of meer waarden uit 1!! tabel willen orderen, dan zou je eventueel op die gegevens een index kunnen zetten om de ordening te versnellen. Vraag is alleen of het echt netto effect zal hebben. SQL2K laat trouwens behoorlijk snel een index zitten en valt terug naar table scans.
Ik begrijp dat je me wilt helpen, maar kan dit de volgende keer op een leukere manier? Over kennis van SQL valt te twisten he, zeker aan de hand van 2 berichten!
Ik ben nu wel overtuigd dat een order by niet erg veel sneller te maken is met een index, het is jammer, maar het zij zo.
tnx for the replies in ieder geval.
Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.
Verwijderd
Wat DDD al zegt: bij joins zijn indices niet zo belangrijk, want indices zijn alleen belangrijk voor filtering. Wat je kunt doen is kijken naar het execution plan in Query Analyzer en kijken wat er allemaal wordt gedaan door SQLserver en dus waar de bottlenecks zitten. Profiler er op los laten en kijken waar de meeste tijd in gaat zitten en daar actie op ondernemen.
Nonclustered indices zijn trouwens niet specifiek sqlserver2000.
Verder zou je eventueel naar Views kunnen gaan kijken. SQLServer is geoptimaliseerd voor views (een soort pre-calculated queries), dus je join query kun je als view storen, en dan met een simpele "select * from view order by field" kun je de waarden verkrijgen. field is dan uiteraard je berekening die je in je view stopt als veld.
Dat heb ik ook geprobeerd. Maar het schijnt voor de berekening niet zoveel uit te maken of je die doet in je order by of dat je die in je select zet. Wellicht zal dit in een view anders zijn? Kvraag het me af, maar ik ga het vol goede moed proberenOp donderdag 21 februari 2002 09:29 schreef Otis het volgende:
...en dan met een simpele "select * from view order by field" kun je de waarden verkrijgen. field is dan uiteraard je berekening die je in je view stopt als veld.
Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.
Uhm dat had je ook al in sqlserver 7Op woensdag 20 februari 2002 22:32 schreef The - DDD het volgende:
[..]
Feit dat je niet eens een opmerking maakt over clustered en nonclustered indexes (is SQL2K specifiek) zegt al wel genoeg over je kennis wat betreft indexes onder MSSQL. Ga vooral een clustered index gebruiken als je ook nonclustered indexes hebt. (je kan maar 1 clustered index hebben, indien niet gedefinieerd is dit altijd je primary key)
Nope. Kan niet...Op donderdag 21 februari 2002 10:10 schreef raptorix het volgende:
Dat van die Views van Otis is idd denk ik de beste manier, volgens mij kan je ook indices op views maken in sqlserver 2k.
Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.
Verwijderd
Err echt wel. Books online, tik in de index: 'Views'Op donderdag 21 februari 2002 10:25 schreef mOrPhie het volgende:
[Indexes op views]
Nope. Kan niet...
open 'Indexes on' en voila.
Ow? twas mij nog nooit gelukt ga er ff naar kijken. Tnx voor de verbetering.Op donderdag 21 februari 2002 10:59 schreef Otis het volgende:
[..]
Err echt wel. Books online, tik in de index: 'Views'
open 'Indexes on' en voila.
Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.
Verwijderd
Hoge TPC benchmark scores worden bereikt door o.a. partitioned views. Daar geen indices op definieren levert je nooit een hoge TPC benchmark op. SQLserver staat overal bovenaan, dus dieheeft die dingen echt welOp donderdag 21 februari 2002 11:20 schreef mOrPhie het volgende:
[..]
Ow? twas mij nog nooit gelukt ga er ff naar kijken. Tnx voor de verbetering.
Hey ... maar dan heb je ook wat!
Verwijderd
blabla, en waarom dan wel? Het is zeker aan te bevelen als je veel meer retrievals doet van rows dan je insert op een table. We praten hier niet over MySQL troep.Op donderdag 21 februari 2002 12:11 schreef Killemov het volgende:
Hey Otis, zo'n computed field opnemen in je DB is 80% van de gevallen een database nono. (Waarom 80%? Ik ben aanhanger van de 80/20 regel!)
Heb je ook gezien wat voor servers ze gebruiken daaro.Op donderdag 21 februari 2002 12:03 schreef Otis het volgende:
[..]
Hoge TPC benchmark scores worden bereikt door o.a. partitioned views. Daar geen indices op definieren levert je nooit een hoge TPC benchmark op. SQLserver staat overal bovenaan...
Kijk maar 'ns hier.
Ik dacht nog even van, naja, toch niet zo heel erg zwaar... een PIII 900 Xeon..... Blijkt dat er 272 processoren in de cluster zitten! Damn...
Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.
Ik heb het allemaal een beetje na lopen zoeken. En ik kom tot de volgende vraag:
Wat zijn de exacte indexes die je gelegd hebt op die ene tabel (zoals je in een bovenstaande reply zei)?
Dit is vooral gericht op de primary key, de unique kolommen en zelf gedefinieerde indexes. Ben heel erg benieuwd wat de exacte SQL is die je hiervoor gebruikt hebt.
Ik heb het namelijk na lopen zoeken en het kan wel degelijk zin hebben om op je order by kollomen een clustered index te zetten. Netto resultaat heb ik niet kunnen checken, m'n gegevens set was te klein voor een goede meting.