Impact des fonctions sur le parcours des indexes

Consultant SQL Server & Data Insights au sein de la société coopérative SCOP IT et MVP SQL Server depuis 2015, j'ai hâte de partager mes expériences avec vous !

11 Comments

    1. Sauget Charles-Henri

      Héhé oui SC2 c’est plus simple que de comprendre pourquoi il veut pas seek :) Tu as vu l’heure ? :) Encore au moins 10 minutes avant SC2 !

    1. Sauget Charles-Henri

      Hello,
      Pas besoin de poils pour ce genre de SQL on reste encore dans le domaine de l’accessible ;) Bon tu aurais pu répondre à mon intérogation au passage? Pourquoi ? Pourquoi pas un index Seek ein ? !

      1. Tarik

        Hello,
        Je viens de tester une requête du même style, avec le même type d’indexe, mais sans le “N'” pour l’unicode, et il fait bien un SEEK.

        1. Sauget Charles-Henri

          Je viens de tester sans le N, même punition, attention, il s’agit bien de faire un <> ” et IS NULL car les autres combinaison du type <> ” OR IS NOT NULL … fonctionne bien.

          1. Tarik

            C’est bien un ” ‘AAA’ OR IS NULL” ce que j’ai fait, et d’ailleurs il fait deux SEEK et non pas un seul, et du coup je me demande si ça ne revient pas au même que de faire un UNION.
            Mais cela n’explique pas pourquoi tu prends un SCAN.
            Voici la requete que j’utilise:
            select CodeTest, count(IdTest) from dbo.Table_1
            where (CodeTest ‘AAA’
            or CodeTest is null)
            group by CodeTest

          2. Sauget Charles-Henri

            Tu peux me scripter ton index, et ta table ? :)
            Voici ce que j’ai en table/index de mon coté :
            CREATE TABLE [dbo].[Table1](
            [id] [int] IDENTITY(1,1) NOT NULL,
            [Nom] [nvarchar](100) NULL,
            CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
            (
            [id] ASC
            )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
            ) ON [PRIMARY]

            CREATE NONCLUSTERED INDEX [IX_Nom]
            ON [dbo].[Table1] ([Nom])

  1. Tarik

    CREATE TABLE [dbo].[Table_2](
    [IdTest] [int] NOT NULL,
    [CodeTest] [varchar](50) NULL,
    CONSTRAINT [PK_Table_2] PRIMARY KEY CLUSTERED
    (
    [IdTest] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]

    GO

    /****** Object: Index [IX_NC_CodeTest_2] Script Date: 04/06/2013 22:21:11 ******/
    CREATE NONCLUSTERED INDEX [IX_NC_CodeTest_2] ON [dbo].[Table_2]
    (
    [CodeTest] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    GO

Leave a Comment

Your email address will not be published. Required fields are marked *