At måle performance kan du kun gøre ved at udføre dine SQL'er og tage tid på udførelsen før og efter. Forskellen i performance ved at benytte SQL Server som backend vil du i øvrigt primært se ved store datamængder - og ved at flere samtidige brugere kører ubesværet.
At optimere SQL for performance er lidt en videnskab - der findes nogle generelle tips som er dækkende for alle databasetyper (f.eks. korrekt brug af indeks) og der findes tips som er rettet mod enkelte databasetyper (f.eks. valg af SQL syntaks).
I dit tilfælde skal du primært optimere efter Access mht SQL syntaks da det er Access' databasemotor der behandler SQL'en, mens indeksoptimering etc skal ske efter SQL Server.
Jeg har skrevet en række artikler "Basal performance tuning, part 1-3" som du kan finde her i artikelsektionen der fortæller om første niveau i performance tuning primært på SQL Server - se
http://www.eksperten.dk/artikler/Databaser/MS-SQL/Meget kort sagt; For alle join kriterier skal du lægge et indeks på kolonnerne der indgår. For alle where betingelser skal du lægge et indeks på kolonnerne der indgår. For alle sorteringer (ORDER BY / GROUP BY) skal du lægge et indeks på kolonnerne.
Jeg er dog ikke sikker på hvordan brugen af indeks er, når det er linkede tabeller man vil performance tune mod - en tanke jeg har er, at det muligvis kan betale sig at sætte indeks på i Access' registering af de linkede tabeller (ved nemlig ikke om Access foretager join'en lokalt eller sender den til SQL Server - tror mest det første). Det at lave lokale indeks i Access kan så give problemer mht indeks opdatering i flerbruger-systemer...
Mht SQL skal du begrænse brugen af OR og <> og NOT samt undgå unødige sorteringer (fx DISTINCT og UNION har implicit sortering - UNION ALL har ikke).
Noget helt andet som jeg lige vil spørge om; Har du tænkt på backup og transaktionslog på din SQL Server?