en-USsv-SE
Du är här:   Forum
HemHemSQLug.SESQLug.SETävlingarTävlingarSQLug.se challenge 2011SQLug.se challenge 2011
Föregående
 
Nästa
Nytt inlägg
2011-06-01 14:32
 

2011 år programmeringstävling har avgjorts!

Det började stort med flera bidrag och ganska snart stod det klart att de flesta av de tävlande hade förstått att lösningen på problemet var en s.k Relational Division.

Inte minst med tanke på att flera bidrag såg ut att vara kopierade från Celko’s artikel ”Divided we stand”. Det är dessa bidrag som ligger på ca 1 365 000 reads. Då mängden bidrag ökade tog vi beslutet att bara presentera de som slutfördes inom 60 sekunder.

En hel del bidrag klarade inte alla enhetstester och sållades bort innan vi testade den mot de slutliga tabellerna.

Det som de tre första lösningarna har gemensamt är att de tänkt till lite extra och lyckats få bort en läsning av PeopleAttribute, vilket de övriga inte verkat lyckats med.

Vissa har försökt trixa med olika query hints med mer eller mindre lyckade resultat. Någon levererade en dynamisk SQL-lösning som var riktigt snabb på den slutliga tabellen men föll bort i en av enhetstesterna pga för månmga kolumner. Lösningarna med SQLCLR trodde jag skulle gå snabbare men de presterade precis över 60-sekunders strecket. Detta pga av SAFE mode, dvs ingen parallellitet.



Den slutliga tabellen utökades efterhand då mängden lika snabba lösningar skickades in. Det kändes orättvist att kora en vinnare på ett mindre set och en tidsdifferens på enbart 20 ms!

Vi la till fler rader i tabellerna och utökade antalet WantedSet efterhand för att det skulle bli tydligare vilken lösning som till slut skulle prestera bäst. Den slutgiltiga tabellen är i stort sett en kopia av vår transaktionsdatabas där jag kopierade raderna ifrån. PeopleID är CustomerID, AttributeID är ArticleCode och AttributeValue är PriceType.



Den bästa lösningen använder sig av parallellitet på att utmärkt sätt.



Genom att använda CROSS APPLY gör han sin lösning mer benägen att bli parallell än han som kom på andra plats som använde sig av INNER JOIN.  I övrigt är de två lösningarna identiska i upplägget.

Han som kom på tredje plats hade en liknande lösning med INNER JOIN men la tyvärr en beräkning på ett join-villkor vilket gjorde att det index som fanns inte kunde användas (non-sargable).



Några har tyckt att hans eller hennes senare lösning borde vara snabbare eftersom den varit det på sin egen maskin. Det är ingen garanti att det går snabbare på tävlingsmaskinen. Mängden data i tabellerna, inställningar på servern och andra faktorer påverkar. Jag har köpt loss en egen server till nästa tävling som ni kommer att få tillgång till med ftp och lägga upp era lösningar på.



Vi önskar Göran Rönnbäck (#15), Henrik Nilsson (#1) samt Sergey Klimkevich (#1) lycka till med de bäst presterande lösningarna.



Om ni vill att Microsoft ska standardisera Relational Division i SQL Server och göra T-SQL mer komplett får ni gärna gå in och rösta på mitt Connect-förslag här

https://connect.microsoft.com/SQLServ...

 

//Peter







 
Nytt inlägg
2011-06-01 16:58
 

**********************************************************************************************************

*  Plats  *  Förslag                 *  Företag             *   Duration    *     CPU      *  Reads      * **********************************************************************************************************

*      1  *  Göran Rönnbäck 15       *  SQL Service         *        8 065  *     120 668  *  1 262 868  *

*         *  Göran Rönnbäck 16       *  SQL Service         *        8 533  *     117 785  *  1 197 021  *

*      2  *  Henrik Nilsson 1        *  Brummer & Partners  *       14 082  *     197 845  *  1 262 215  *

*      3  *  Sergey Klimkevich 1     *  Memnon Networks     *       16 947  *     239 181  *  1 481 189  *

*      4  *  Jesús Reina Carvajal 1  *  SEB                 *       23 129  *     326 949  *  2 037 626  *

*         *  Jesús Reina Carvajal 2  *  SEB                 *       23 374  *     329 942  *  2 035 431  *

*         *  Jesús Reina Carvajal 3  *  SEB                 *       24 616  *     352 826  *  1 364 776  *

*         *  Martin Höglund 1        *  Bring Citymail      *       24 996  *     368 038  *  2 739 985  *

*         *  Henrik F 2              *  Agero               *       26 536  *     380 848  *  1 364 560  *

*         *  Lachlan 1               *  Sony Ericsson       *       26 645  *     381 405  *  1 419 487  *

*         *  Henrik F 3              *  Agero               *       26 661  *     381 800  *  1 363 146  *

*         *  Eddan 1                 *                      *       26 677  *     383 608  *  1 364 322  *

*         *  Per Scheffer 2a         *  Bizware             *       26 708  *     381 439  *  1 363 164  *

*         *  Patrik Molin 1          *  Affecto             *       26 728  *     382 030  *  1 363 146  *

*         *  Jonas Bergström 1       *  SQL Service         *       26 732  *     381 583  *  1 364 365  *

*         *  Zhong 3                 *  B3IT                *       26 794  *     382 720  *  1 363 146  *

*         *  Lachlan 2               *  Sony Ericsson       *       26 802  *     385 382  *  1 417 979  *

*         *  Henrik F 1              *  Agero               *       26 810  *     384 359  *  1 364 571  *

*         *  Joel Greijer 1          *  Releye AB           *       26 849  *     386 541  *  1 419 459  *

*         *  Stefan Logosz 1         *  Corementis          *       27 076  *     386 269  *  1 417 973  *

*         *  Peter Abelsson 1        *  H & M               *       27 414  *     392 903  *  1 362 459  *

*         *  Lars Gråmark 1          *                      *       27 446  *     393 308  *  1 419 388  *

*         *  Christian 1             *                      *       27 451  *     395 559  *  1 364 320  *

*         *  Henrik Nilsson 2        *  Brummer & Partners  *       27 517  *     393 186  *  1 363 161  *

*         *  Zhong 2                 *  B3IT                *       27 536  *     392 029  *  1 362 295  *

*         *  Per Scheffer 2b         *  Bizware             *       27 555  *     391 940  *  1 362 323  *

*         *  Martin Höglund 3a       *  Bring Citymail      *       34 482  *     316 414  *  1 442 915  *

*         *  Martin Höglund 3b       *  Bring Citymail      *       37 170  *     379 193  *  1 420 342  *

*         *  Martin Höglund 2a       *  Bring Citymail      *       48 756  *     750 797  *  4 073 365  *

*         *  Martin Höglund 2b       *  Bring Citymail      *       49 403  *     759 334  *  4 680 100  *

*         *  Per Scheffer 1          *  Bizware             *       54 914  *     825 210  *  5 622 613  *

**********************************************************************************************************

 
Nytt inlägg
2012-03-21 11:18
 


Jag skulle gärna vilja veta om och när Challange 2012 startar.
//henrik
 
Föregående
 
Nästa
HemHemSQLug.SESQLug.SETävlingarTävlingarSQLug.se challenge 2011SQLug.se challenge 2011


Annons