La clause DISTINCT permet d'éliminer les doublons à l'intérieur d'une colonne. A l'instar de la clause GROUP BY, les versions de SQL Server antérieures à la version 7.0 trient toujours les données de manière à supprimer les doublons. Mais l'optimiseur de SQL Server 7.0 peut, selon le coût de l'option
DISTINCT et UNION
retenue, utiliser
le tri ou le hachage pour éliminer les doublons.
Voici quelques exemples illustrant la manière dont l’optimiseur de requêtes traite
la clause DISTINCT dans différentes conditions. En premier lieu, il faut exécuter
le code de configuration présenté dans le listing 1 /Files/09/8612/Listing_01.txt
pour créer l’exemple de table de commandes utilisé à travers le reste de cet article.
Notre table de commandes est identique à celle de Northwind, à une exception près
: nous avons augmenté la taille de la table à 100.000 enregistrements pour simuler
un environnement de production pour les tests de performances et d’optimisation.
Nous pouvons à présent exécuter la requête suivante, qui classe les enregistrements
de la table en fonction de la clause DISTINCT de l’instruction SELECT et d’un
index non clusterisé dans la colonne orderid. (Assurez-vous d’activer l’option
Show Execution Plan dans le menu Query de l’analyseur de requêtes afin de visualiser
le plan de l’optimiseur) :
Use Northwind
select distinct orderid
from orders
where customerid = ‘WHITC’
L’écran 1 montre que l’optimiseur utilise le tri pour traiter la requête. Si on
n’utilise pas l’index sur orderid, la même requête utilise le hachage à la place
du tri pour générer ses résultats. Si par exemple on exécute la requête sans la
clause WHERE, l’optimiseur utilisera un plan d’exécution similaire à celui illustré
par l’écran 2.
L’opérateur UNION fusionne deux tables en un seul ensemble de résultats contenant
tous les enregistrements apparaissant dans l’une des tables ou dans les deux.
Le traitement UNION est différent selon que l’on utilise ou non l’option ALL.
Si on spécifie ALL, l’optimiseur affiche tous les enregistrements résultants,
y compris les doublons. Si on ne spécifie pas ALL, l’optimiseur traite l’opérateur
UNION de la même manière que la clause DISTINCT, et supprime tous les enregistrements
en doublon.
Listing 1 Code utilisé pour configurer des tables triées
create table orders (orderid int not null,
customerid char(5) not null,
orderdate datetime default getdate() null,
shippeddate datetime null,
freight money null,
shipname varchar(40) null,
shipaddress varchar(60) null)
go
declare @i int , @order_id integer
declare @customer_id char(5)
declare @shipped_date datetime
declare @freight money
set @i = 1
set @customer_id = 'ALKHE'
set @shipped_date = getdate()
set @freight = 100.00
while @i < 100001
begin
insert into orders (orderid, customerid, shippeddate, freight)
values( @i, @customer_id, @shipped_date, @freight)
set @i = @i+1
end
go
update orders set customerid= 'WHITC'
where orderid % 1000 = 213
go
|
Téléchargez cette ressource
Comment accélérer la transformation des environnements de travail ?
Dans un monde professionnel en pleine mutation, la mobilité, l’efficacité énergétique, la sécurité et l’intelligence embarquée sont devenues des critères décisifs pour les équipements informatiques. Découvrez comment les nouveaux PC Microsoft Surface dotés des processeurs Snapdragon X Series s’imposent comme une réponse stratégique aux nouveaux enjeux IT.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Top 6 des priorités des DSI en 2026
- Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
- À l’aube de 2026, le SaaS entre dans une nouvelle phase
- Face à l’urgence écologique, l’IT doit faire sa révolution
Articles les + lus
CES 2026 : l’IA physique et la robotique redéfinissent le futur
Les 3 prédictions 2026 pour Java
Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
Face à l’urgence écologique, l’IT doit faire sa révolution
D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
À la une de la chaîne Tech
- CES 2026 : l’IA physique et la robotique redéfinissent le futur
- Les 3 prédictions 2026 pour Java
- Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
- Face à l’urgence écologique, l’IT doit faire sa révolution
- D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
