IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Différence entre deux index


Sujet :

Administration SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    consultant BI
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suède

    Informations professionnelles :
    Activité : consultant BI
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Points : 95
    Points
    95
    Par défaut Différence entre deux index
    bonjour a tous

    j'ai une requéte de reporting qui se lance sur le serveur du production pour faire une extraction du production sur une periode de 8 heures

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(distinct([Board_ID])) FROM Location where  Inspection_end_time between  '2014-09-25 14:00:00' and '2014-09-25 22:00:00'
    pendant la première lancement du cette requête cette dernière a pris 355ms pour afficher la résultat pour cela j'ai utiliser l'assistance paramétrage de moteur du

    base de donné pour analyser cette requête et voir l'index manquant qui permet d’accéléré leur exécution la recommandation était de crée un index non cluster

    qui groupe les colone Board_ID, Inspection_end_time between ,[Location_ID]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /****** Object:  Index [_dta_index_Location_8_1765581328__K4_K1_K6]    Script Date: 09/25/2014 15:11:21 ******/
    CREATE NONCLUSTERED INDEX [_dta_index_Location_8_1765581328__K4_K1_K6] ON [dbo].[Location] 
    (
    	[Board_ID] ASC,
    	[Location_ID] ASC,
    	[Inspection_end_time] ASC
    )WITH (PAD_INDEX  = ON, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
    GO
    après l'ajout de cette index le temps a été diminuer vers 145ms
    le lendemain j'ai lancer de nouveau l'assistant en analysant cette requête la recommandation ma demande de crée un autre index noncluster qui contient les mêmes colonnes [Inspection_end_time] [Location_ID] [Board_ID] mais avec ordre inverse de la première index ci joint leur script de création
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /****** Object:  Index [_dta_index_Location_8_1765581328__K6_K1_K4]    Script Date: 09/25/2014 15:11:07 ******/
    CREATE NONCLUSTERED INDEX [_dta_index_Location_8_1765581328__K6_K1_K4] ON [dbo].[Location] 
    (
    	[Inspection_end_time] ASC,
    	[Location_ID] ASC,
    	[Board_ID] ASC
    )WITH (PAD_INDEX  = ON, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
    GO
    Après leur création le temps a diminuer a 50 ms ma question quel est la différence entre ces deux index ???

    pour info ma requête actuellement est entrain d’utiliser la deuxième index --->seek index dta_index_Location_8_1765581328__K6_K1_K4

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Tout dépend des prédicats qui utilisent cet index.

    Avec un prédicat par égalité, aucune différence car l'égalité est commutative (a = b <=> b = a)
    Avec un prédicat "non équi", la différence est majeure car a > b est différent de b > a !!!
    Or les colonnes composant un index vectorise l'information.

    Voir mon livre sur SQL, chapitre indexation, pour de plus amples informations.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Différence entre deux dates
    Par Azharis dans le forum Access
    Réponses: 3
    Dernier message: 11/01/2006, 10h58
  2. [access] différence entre deux champs
    Par loutente dans le forum Langage SQL
    Réponses: 1
    Dernier message: 17/08/2005, 15h57
  3. Différence entre deux dates
    Par pittzz dans le forum Oracle
    Réponses: 5
    Dernier message: 18/07/2005, 12h24
  4. Comment obtenir la différence entre deux dates ?
    Par jbat dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2005, 09h34
  5. Résultats erroné différence entre deux types TDateTime
    Par Alghero dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/03/2004, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo