Jasman: Beklager sådan er det desværre ikke.
Rahp: Du har ret.
I de nyere versioner af C5 er der INGEN forskel på at bruge #USING og USING. Forskellen glæder desværre kun i C5 2.10 SQL og i alle SQL/Oracle versioner af XAL.
Forskellen bestod i om "USING <index>" kom med i det komplilerede kode, og som raph beskriver så bliver en "USING <index" oversat til "ORDER BY <de felter som er i indexet>". Dette tvinger dog ikke SQL serveren til at bruge dette index, men da dette index passer 100% med de felter som den skal sorteres efter, vil den højst sansynlig vælge det.
Man kan godt i SQL sproget tvinge den til at bruge et bestemt SQL-indeks. Dette hedder et table-hint.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_fa-fz_4ox9.asp<-- Se under Table Hints
Dette kan aktiveres i C5 vha. enten -zzh28 eller -zzh156 som opstartsparameter, men er ikke supporteret
Grunden til så at bruge #USING er at vise, at man er ligeglad med hvilken rækkefølge posterne kommer i og derved får lidt ekstra performance ved at en sortering udgås. Det er dog meget lidt ekstra performance dette giver i forhold til #SqlFieldList og #SqlSumList
SQL serveren er klog nok til, at man kan slippe afsted med følgende kode på SQL:
SEARCH IndKartArkiv USING NumTraIdx
WHERE Transaktion == 42
//...
END
Her vil den bruge TraNumIdx i stedet, da dette passer perfekt og giver samme sortering, når Transaktionsnummeret er låst.
-Broholm