{"id":768,"date":"2010-03-16T18:16:24","date_gmt":"2010-03-16T17:16:24","guid":{"rendered":"http:\/\/blog.capdata.fr\/?p=768"},"modified":"2022-12-01T17:54:59","modified_gmt":"2022-12-01T16:54:59","slug":"interet-de-creer-des-indexes-cluster-uniques","status":"publish","type":"post","link":"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/","title":{"rendered":"Int\u00e9r\u00eat de cr\u00e9er des indexes cluster uniques"},"content":{"rendered":"<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F768&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F768&#038;title=Int%C3%A9r%C3%AAt%20de%20cr%C3%A9er%20des%20indexes%20cluster%20uniques\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=Int%C3%A9r%C3%AAt%20de%20cr%C3%A9er%20des%20indexes%20cluster%20uniques&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F768\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a><p>Hello,<\/p>\n<p>Un petit post rapide sur l&#8217;impact que peuvent avoir des valeurs de cl\u00e9s d&#8217;index clusteris\u00e9 dupliqu\u00e9es sur les pages d&#8217;indexes non clusteris\u00e9s.<\/p>\n<p>En effet, par d\u00e9faut la commande CREATE CLUSTERED INDEX va cr\u00e9er un index clusteris\u00e9 non-unique, qui donc autorise l&#8217;insertion de valeurs dupliqu\u00e9es. Or cela pose un certain nombre de probl\u00e8mes, notamment lorsque l&#8217;optimiseur choisit d&#8217;utiliser un index non clusteris\u00e9 pour r\u00e9soudre un pr\u00e9dicat et de faire des lectures additionnelles dans l&#8217;index clusteris\u00e9 pour lire des colonnes non inclues dans l&#8217;index NC, ce qu&#8217;on appelle un <em>bookmark lookup<\/em> (bookmark = marque pages).<\/p>\n<p><em><strong>Exemple: une table MATABLE (col1,col2,col3) avec un index clusteris\u00e9 sur col1 (bigint) et un index non clusteris\u00e9 sur col2 (datetime)<br \/>\n<\/strong><\/em><\/p>\n<pre>set showplan_text on\r\nselect col1, col2, col3 from MATABLE where col2 = '2010\/03\/16'<\/pre>\n<pre> |--Nested Loops(Inner Join, OUTER REFERENCES:([CAPDATA].[dbo].[MATABLE].[col1]))\r\n    |--Index Seek(OBJECT:([CAPDATA].[dbo].[MATABLE].[MATABLE_IDXNCLU_col2]),\r\n                 SEEK:([CAPDATA].[dbo].[MATABLE].[col2]='2010-03-16 00:00:\r\n                  00.000') ORDERED FORWARD)\r\n    |--Clustered Index Seek(OBJECT:([CAPDATA].[dbo].[MATABLE].[MATABLE_IDXCLU_col1]),\r\n                 SEEK:([CAPDATA].[dbo].[MATABLE].[col1]=[CAPDATA].[dbo].[MATABLE].[col1])\r\n                 LOOKUP ORDERED FORWARD)<\/pre>\n<p>L&#8217;op\u00e9rateur<strong> Index Seek<\/strong> est celui utilis\u00e9 pour r\u00e9soudre le pr\u00e9dicat sur la date et le <strong>Clustered Index Seek<\/strong> est l&#8217;op\u00e9rateur choisi par l&#8217;optimiseur pour lire les colonnes additionnelles col1 et col3 (LOOKUP ORDERED FORWARD&#8230;).<\/p>\n<p>Dans les pages\u00a0 d&#8217;un index non clusteris\u00e9, on va stocker\u00a0 \u00e0 la fois la valeur de la cl\u00e9 de l&#8217;index NC (donc ici col2) ainsi que la valeur de la cl\u00e9 de l&#8217;index clusteris\u00e9 (donc ici col1), qui va servir de pointeur entrant dans l&#8217;index clusteris\u00e9 pour faire ce fameux <em>Bookmark Lookup<\/em>. La valeur de col1 repr\u00e9sente donc le &#8216;marque-pages&#8217; vers les pages de l&#8217;index clusteris\u00e9.<\/p>\n<p>Maintenant comment savoir vers quelle page l&#8217;index NC va pointer lorsque col1 peut se trouver \u00e0 plusieurs endroits de l&#8217;index clusteris\u00e9 (lorsqu&#8217;il y a des valeurs dupliqu\u00e9es) ? Lorsqu&#8217;il y a des valeurs de cl\u00e9 dupliqu\u00e9es dans l&#8217;index clusteris\u00e9, SQL Server est oblig\u00e9 d&#8217;ajouter en plus de col2 et col1 un identifiant unique de type uniquifier (non visible par les outils courants SSMS et autres sp_helpindex) pour pointer vers la bonne ligne dans la bonne page. Et cet uniquifier ajoute 16 octets suppl\u00e9mentaires par ligne dans les pages de l&#8217;index NC.<\/p>\n<p>Pour le d\u00e9montrer, nous allons d&#8217;abord cr\u00e9er une table TABLE1 avec 3 colonnes, un index clusteris\u00e9 non unique sur col1 et un index non clusteris\u00e9 non unique sur col2.<\/p>\n<pre>CREATE TABLE TABLE1 (\r\n col1 bigint NOT NULL,\r\n col2 bigint NOT NULL DEFAULT 10000,\r\n col3 CHAR (400) NOT NULL DEFAULT 'abcdefghijklmnopqrstuvwxyz');\r\n\r\nCREATE CLUSTERED INDEX TABLE1_IDXCLU_col1 ON TABLE1 (col1);\r\nCREATE NONCLUSTERED INDEX TABLE1_IDXNCLU_col2 ON TABLE1 (col2);\r\nGO<\/pre>\n<p>Nous allons ensuite alimenter la table\u00a0 en for\u00e7ant la g\u00e9n\u00e9ration de valeurs dupliqu\u00e9es:<\/p>\n<pre>DECLARE @a INT, @random BIGINT;\r\nSELECT @a = 1;\r\nSELECT @random = cast(rand(@a)*100 as bigint);\r\nWHILE (@a &lt; 10000)\r\nBEGIN\r\n INSERT INTO TABLE1 VALUES (@random, DEFAULT, DEFAULT);\r\n SELECT @a = @a + 1;\r\n SELECT @random = cast(rand(@a)*100 as bigint);\r\nEND;\r\nGO<\/pre>\n<p>En ins\u00e9rant 9999 valeurs comprises entre 1 et 100, il y a des chances pour que j&#8217;obtienne un certain nombre de valeurs en double:<\/p>\n<pre>select col1, COUNT(*) as compte\r\nfrom TABLE1 group by col1 having COUNT(*) &gt; 1<\/pre>\n<pre>col1\u00a0\u00a0 compte\r\n----\u00a0\u00a0\u00a0 ---------\r\n89\u00a0\u00a0 \u00a0531\r\n72\u00a0\u00a0 \u00a0537\r\n75\u00a0\u00a0 \u00a0537\r\n78\u00a0\u00a0 \u00a0536\r\n86\u00a0\u00a0 \u00a0537\r\n81\u00a0\u00a0 \u00a0536\r\n84\u00a0\u00a0 \u00a0536\r\n87\u00a0\u00a0 \u00a0536\r\n73\u00a0\u00a0 \u00a0537\r\n85\u00a0\u00a0 \u00a0537\r\n76\u00a0\u00a0 \u00a0537\r\n88\u00a0\u00a0 \u00a0537\r\n79\u00a0\u00a0 \u00a0537\r\n82\u00a0\u00a0 \u00a0537\r\n77\u00a0\u00a0 \u00a0537\r\n80\u00a0\u00a0 \u00a0537\r\n71\u00a0\u00a0 \u00a0344\r\n83\u00a0\u00a0 \u00a0537\r\n74\u00a0\u00a0 \u00a0536<\/pre>\n<p>Maintenant je vais m&#8217;int\u00e9resser \u00e0 la structure de mon index NC, en utilisant l&#8217;option DETAILED de la DMF sys.dm_db_index_physical_stats(), afin de voir l&#8217;espace utilis\u00e9 \u00e0 chaque niveau de l&#8217;index NC ( la valeur 2 = indid du NC):<\/p>\n<pre>select index_level, min_record_size_in_bytes,\r\nmax_record_size_in_bytes, avg_record_size_in_bytes,\r\nrecord_count, page_count\r\nfrom sys.dm_db_index_physical_stats (db_id('CAPDATA'),object_id('TABLE1'),2,NULL,'DETAILED')\r\n\r\nindex_level min_record_size_in_bytes max_record_size_in_bytes avg_record_size_in_bytes\r\n----------- ------------------------ ------------------------ ------------------------\r\n0\u00a0\u00a0 \u00a0       17\u00a0\u00a0 \u00a0                    25\u00a0\u00a0 \u00a0                   24,984\u00a0\u00a0 \u00a0\r\n1\u00a0\u00a0 \u00a0       23\u00a0\u00a0 \u00a0                    31\u00a0\u00a0 \u00a0                   30,764<\/pre>\n<pre>record_count\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 page_count\r\n-------------------- --------------------\r\n9999\u00a0\u00a0 \u00a0             34\r\n34\u00a0\u00a0 \u00a0               1<\/pre>\n<p>L&#8217;index NC compte 35 pages, 1 pages de niveau root et 34 pages de niveau feuille. Le niveau 1 repr\u00e9sente le niveau root. Il compte une seule page donc et 34 lignes pointant vers les 34 pages du niveau inf\u00e9rieur. On voit que les tailles minimale et maximale varient entre 23 et 31 octets. Cel\u00e0 est d\u00fb au fait que presque chaque ligne\u00a0 contient en plus des valeurs de col2 et col1 un uniquifier permettant de distinguer les lignes dupliqu\u00e9es qui sont r\u00e9f\u00e9renc\u00e9es. On peut le voir en allant lire le contenu de cette root page. Le dbcc ind() va nous permettre d&#8217;identifier cette root page:<\/p>\n<pre>dbcc ind('CAPDATA','TABLE1',2)\r\nPageFID\u00a0 PagePID\u00a0\u00a0\u00a0\u00a0 IAMFID \u00a0\u00a0 IAMPID\u00a0\u00a0\u00a0\u00a0\u00a0 ObjectID\u00a0\u00a0\u00a0 IndexID\u00a0\u00a0\u00a0\u00a0 (...)            IndexLevel      (...)\r\n------- \u00a0----------- ------ \u00a0 \u00a0----------- ----------- ----------- --------------- -------------------- \u00a0 \u00a0 \u00a0\u00a0\r\n1\u00a0\u00a0 \u00a0 \u00a0 \u00a025916\u00a0\u00a0 \u00a0\u00a0\u00a0 NULL\u00a0\u00a0 \u00a0\u00a0 NULL\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 1138103095\u00a0\u00a0  2\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\u00a0\u00a0\u00a0\r\n1\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 25915\u00a0\u00a0 \u00a0\u00a0\u00a0 1\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 25916\u00a0\u00a0 \u00a0\u00a0\u00a0 1138103095\u00a0\u00a0 \u00a02\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\r\n1\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 23719\u00a0\u00a0 \u00a0\u00a0\u00a0 1\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 25916\u00a0\u00a0 \u00a0\u00a0\u00a0 1138103095\u00a0\u00a0 \u00a02\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\r\n(...)<\/pre>\n<p>index_level \u00e0 1, notre page est la <strong>23719<\/strong>. un bref dbcc page:<\/p>\n<pre>dbcc traceon(3604)\r\ndbcc page(5,1,23719,3)\r\nFileId PageId\u00a0\u00a0\u00a0\u00a0\u00a0 Row\u00a0\u00a0\u00a0 Level\u00a0 ChildFileId ChildPageId col2 (key)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 col1 (key)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 UNIQUIFIER (key) KeyHashValue\r\n------ ----------- ------ ------ ----------- ----------- -------------------- -------------------- ---------------- ----------------\r\n1\u00a0\u00a0 \u00a023719\u00a0\u00a0 \u00a0     0\u00a0\u00a0 \u00a0   1\u00a0\u00a0 \u00a0  1\u00a0\u00a0 \u00a0       25915\u00a0\u00a0 \u00a0   NULL\u00a0\u00a0 \u00a0              NULL\u00a0\u00a0 \u00a0           NULL\u00a0\u00a0 \u00a0          NULL\r\n1\u00a0\u00a0 \u00a023719\u00a0\u00a0 \u00a0     1\u00a0\u00a0 \u00a0   1\u00a0\u00a0 \u00a0  1\u00a0\u00a0 \u00a0       23728\u00a0\u00a0 \u00a0   10000\u00a0\u00a0 \u00a0             71\u00a0\u00a0 \u00a0             300\u00a0\u00a0 \u00a0           NULL\r\n1\u00a0\u00a0 \u00a023719\u00a0\u00a0 \u00a0     2\u00a0\u00a0 \u00a0   1\u00a0\u00a0 \u00a0  1\u00a0\u00a0 \u00a0       23729\u00a0\u00a0 \u00a0   10000\u00a0\u00a0 \u00a0             72\u00a0\u00a0 \u00a0             256\u00a0\u00a0 \u00a0           NULL\r\n1\u00a0\u00a0 \u00a023719\u00a0\u00a0 \u00a0     3\u00a0\u00a0 \u00a0   1\u00a0\u00a0 \u00a0  1\u00a0\u00a0 \u00a0       23730\u00a0\u00a0 \u00a0   10000\u00a0\u00a0 \u00a0             73\u00a0\u00a0 \u00a0             19\u00a0\u00a0 \u00a0            NULL\r\n(...)<\/pre>\n<p>On voit qu&#8217;une colonne a donc \u00e9t\u00e9 ajout\u00e9e. On pourra faire les m\u00eames observations avec les pages de niveau feuille de l&#8217;index NC.<\/p>\n<p>Maintenant si on cr\u00e9e une seconde table TABLE 2 avec cette fois un index clusteris\u00e9 UNIQUE:<\/p>\n<pre>CREATE TABLE TABLE2 (\r\n col1 bigint NOT NULL,\r\n col2 bigint NOT NULL DEFAULT 10000 ,\r\n col3 CHAR (400) NOT NULL DEFAULT 'abcdefghijklmnopqrstuvwxyz');\r\n\r\nCREATE UNIQUE CLUSTERED INDEX TABLE2_IDXCLU_col1 ON TABLE2 (col1);\r\nCREATE NONCLUSTERED INDEX TABLE2_IDXNCLU_col2 ON TABLE2 (col2);\r\nGO\r\n\r\nDECLARE @a INT;\r\nSELECT @a = 1;\r\nWHILE (@a &lt; 10000)\r\nBEGIN\r\n INSERT INTO TABLE2 VALUES (@a, DEFAULT, DEFAULT);\r\n SELECT @a = @a + 1;\r\nEND;\r\nGO<\/pre>\n<p>Jetons un coup d&#8217;oeil \u00e0 sa structure:<\/p>\n<pre>select index_level,min_record_size_in_bytes, max_record_size_in_bytes, avg_record_size_in_bytes, record_count, page_count\r\nfrom sys.dm_db_index_physical_stats (db_id('CAPDATA'),object_id('TABLE2'),2,NULL,'DETAILED')<\/pre>\n<pre>index_level min_record_size_in_bytes max_record_size_in_bytes avg_record_size_in_bytes record_count\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 page_count\r\n----------- ------------------------ ------------------------ ------------------------ -------------------- --------------------\r\n0\u00a0\u00a0 \u00a0        17\u00a0\u00a0 \u00a0                  17\u00a0\u00a0 \u00a0                    17\u00a0\u00a0 \u00a0                   9999\u00a0\u00a0 \u00a0             24\r\n1\u00a0\u00a0 \u00a0        23\u00a0\u00a0 \u00a0                  23\u00a0\u00a0 \u00a0                    23\u00a0\u00a0 \u00a0                    24\u00a0\u00a0 \u00a0              1<\/pre>\n<p>Il ne fait plus que 25 pages (24+1), tout simplement parce qu&#8217;il n&#8217;y a plus de uniquifier dans les pages. La taille moyenne de chaque ligne est redevenue normale. On retrouve la root page correspondante de la m\u00eame fa\u00e7on que plus haut, et en lisant son contenu:<\/p>\n<pre>dbcc traceon(3604)\r\ndbcc page(5,1,23745,3)\r\nFileId PageId\u00a0\u00a0\u00a0\u00a0\u00a0 Row\u00a0\u00a0\u00a0 Level\u00a0 ChildFileId ChildPageId col2 (key)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 col1 (key)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 KeyHashValue\r\n------ ----------- ------ ------ ----------- ----------- -------------------- -------------------- ----------------\r\n1\u00a0\u00a0 \u00a0  23745\u00a0\u00a0 \u00a0   0\u00a0\u00a0 \u00a0   1\u00a0\u00a0 \u00a0    1\u00a0\u00a0      \u00a025923\u00a0\u00a0 \u00a0     NULL\u00a0\u00a0 \u00a0            NULL\u00a0\u00a0 \u00a0            NULL\r\n1\u00a0\u00a0 \u00a0  23745\u00a0\u00a0 \u00a0   1\u00a0\u00a0 \u00a0   1\u00a0\u00a0     \u00a01\u00a0\u00a0 \u00a0     23746\u00a0\u00a0 \u00a0     10000\u00a0\u00a0 \u00a0           427\u00a0\u00a0 \u00a0             NULL\r\n1\u00a0\u00a0 \u00a0  23745\u00a0\u00a0 \u00a0   2\u00a0\u00a0 \u00a0   1\u00a0\u00a0 \u00a0    1\u00a0\u00a0 \u00a0     23747\u00a0\u00a0 \u00a0     10000\u00a0\u00a0 \u00a0           853\u00a0\u00a0 \u00a0             NULL\r\n(...)<\/pre>\n<p>La colonne UNIQUIFIER a disparu. Donc morale de l&#8217;histoire, il faut penser \u00e0 ajouter le mot-cl\u00e9 UNIQUE dans les cr\u00e9ations d&#8217;indexes clusteris\u00e9s.<\/p>\n<p>J&#8217;ajoute aussi que le uniquifier n&#8217;est ajout\u00e9 que lorsqu&#8217;il y a effectivement des doublons dans l&#8217;index clusteris\u00e9. Tant qu&#8217;il n&#8217;y a pas de doublon d\u00e9tect\u00e9, m\u00eame si l&#8217;index a \u00e9t\u00e9 cr\u00e9\u00e9 sans pr\u00e9ciser UNIQUE, il n&#8217;y aura pas de colonne additionnelle.<\/p>\n<p>A+, David B.<\/p>\n<p><script type=\"text\/javascript\" src=\"https:\/\/tcr.tynt.com\/javascripts\/Tracer.js?user=d4FlbGI04r35lZadbi-bpO\"><\/script><\/p>\n<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F768&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F768&#038;title=Int%C3%A9r%C3%AAt%20de%20cr%C3%A9er%20des%20indexes%20cluster%20uniques\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=Int%C3%A9r%C3%AAt%20de%20cr%C3%A9er%20des%20indexes%20cluster%20uniques&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F768\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a>","protected":false},"excerpt":{"rendered":"<p>Hello, Un petit post rapide sur l&#8217;impact que peuvent avoir des valeurs de cl\u00e9s d&#8217;index clusteris\u00e9 dupliqu\u00e9es sur les pages d&#8217;indexes non clusteris\u00e9s. En effet, par d\u00e9faut la commande CREATE CLUSTERED INDEX va cr\u00e9er un index clusteris\u00e9 non-unique, qui donc&hellip; <a href=\"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/\" class=\"more-link\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":7959,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[119,115,116,117,118],"class_list":["post-768","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sqlserver","tag-bookmark-lookup","tag-dbcc-ind","tag-index-clusterise","tag-index-non-clusterise","tag-unique"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Int\u00e9r\u00eat de cr\u00e9er des indexes cluster uniques - Capdata TECH BLOG<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Int\u00e9r\u00eat de cr\u00e9er des indexes cluster uniques - Capdata TECH BLOG\" \/>\n<meta property=\"og:description\" content=\"Hello, Un petit post rapide sur l&#8217;impact que peuvent avoir des valeurs de cl\u00e9s d&#8217;index clusteris\u00e9 dupliqu\u00e9es sur les pages d&#8217;indexes non clusteris\u00e9s. En effet, par d\u00e9faut la commande CREATE CLUSTERED INDEX va cr\u00e9er un index clusteris\u00e9 non-unique, qui donc&hellip; Continuer la lecture &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/\" \/>\n<meta property=\"og:site_name\" content=\"Capdata TECH BLOG\" \/>\n<meta property=\"article:published_time\" content=\"2010-03-16T17:16:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-01T16:54:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2010\/03\/order.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"1500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"David Baffaleuf\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Baffaleuf\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/\"},\"author\":{\"name\":\"David Baffaleuf\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf\"},\"headline\":\"Int\u00e9r\u00eat de cr\u00e9er des indexes cluster uniques\",\"datePublished\":\"2010-03-16T17:16:24+00:00\",\"dateModified\":\"2022-12-01T16:54:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/\"},\"wordCount\":716,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"keywords\":[\"bookmark lookup\",\"dbcc ind\",\"index clusteris\u00e9\",\"index non clusteris\u00e9\",\"unique\"],\"articleSection\":[\"SQL Server\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/\",\"url\":\"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/\",\"name\":\"Int\u00e9r\u00eat de cr\u00e9er des indexes cluster uniques - Capdata TECH BLOG\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/#website\"},\"datePublished\":\"2010-03-16T17:16:24+00:00\",\"dateModified\":\"2022-12-01T16:54:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/blog.capdata.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Int\u00e9r\u00eat de cr\u00e9er des indexes cluster uniques\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.capdata.fr\/#website\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"name\":\"Capdata TECH BLOG\",\"description\":\"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting\",\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.capdata.fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blog.capdata.fr\/#organization\",\"name\":\"Capdata TECH BLOG\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"contentUrl\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"width\":800,\"height\":254,\"caption\":\"Capdata TECH BLOG\"},\"image\":{\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf\",\"name\":\"David Baffaleuf\",\"sameAs\":[\"http:\/\/www.capdata.fr\"],\"url\":\"https:\/\/blog.capdata.fr\/index.php\/author\/dbaffaleuf\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Int\u00e9r\u00eat de cr\u00e9er des indexes cluster uniques - Capdata TECH BLOG","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/","og_locale":"fr_FR","og_type":"article","og_title":"Int\u00e9r\u00eat de cr\u00e9er des indexes cluster uniques - Capdata TECH BLOG","og_description":"Hello, Un petit post rapide sur l&#8217;impact que peuvent avoir des valeurs de cl\u00e9s d&#8217;index clusteris\u00e9 dupliqu\u00e9es sur les pages d&#8217;indexes non clusteris\u00e9s. En effet, par d\u00e9faut la commande CREATE CLUSTERED INDEX va cr\u00e9er un index clusteris\u00e9 non-unique, qui donc&hellip; Continuer la lecture &rarr;","og_url":"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/","og_site_name":"Capdata TECH BLOG","article_published_time":"2010-03-16T17:16:24+00:00","article_modified_time":"2022-12-01T16:54:59+00:00","og_image":[{"width":1000,"height":1500,"url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2010\/03\/order.jpg","type":"image\/jpeg"}],"author":"David Baffaleuf","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"David Baffaleuf","Dur\u00e9e de lecture estim\u00e9e":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/#article","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/"},"author":{"name":"David Baffaleuf","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf"},"headline":"Int\u00e9r\u00eat de cr\u00e9er des indexes cluster uniques","datePublished":"2010-03-16T17:16:24+00:00","dateModified":"2022-12-01T16:54:59+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/"},"wordCount":716,"commentCount":0,"publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"keywords":["bookmark lookup","dbcc ind","index clusteris\u00e9","index non clusteris\u00e9","unique"],"articleSection":["SQL Server"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/","url":"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/","name":"Int\u00e9r\u00eat de cr\u00e9er des indexes cluster uniques - Capdata TECH BLOG","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/#website"},"datePublished":"2010-03-16T17:16:24+00:00","dateModified":"2022-12-01T16:54:59+00:00","breadcrumb":{"@id":"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.capdata.fr\/index.php\/interet-de-creer-des-indexes-cluster-uniques\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/blog.capdata.fr\/"},{"@type":"ListItem","position":2,"name":"Int\u00e9r\u00eat de cr\u00e9er des indexes cluster uniques"}]},{"@type":"WebSite","@id":"https:\/\/blog.capdata.fr\/#website","url":"https:\/\/blog.capdata.fr\/","name":"Capdata TECH BLOG","description":"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting","publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.capdata.fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/blog.capdata.fr\/#organization","name":"Capdata TECH BLOG","url":"https:\/\/blog.capdata.fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/","url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","contentUrl":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","width":800,"height":254,"caption":"Capdata TECH BLOG"},"image":{"@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/"]},{"@type":"Person","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf","name":"David Baffaleuf","sameAs":["http:\/\/www.capdata.fr"],"url":"https:\/\/blog.capdata.fr\/index.php\/author\/dbaffaleuf\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/768","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/comments?post=768"}],"version-history":[{"count":70,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/768\/revisions"}],"predecessor-version":[{"id":9543,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/768\/revisions\/9543"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media\/7959"}],"wp:attachment":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media?parent=768"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/categories?post=768"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/tags?post=768"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}