<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog SQL d&#039;un développeur Microsoft.</title>
	<atom:link href="https://blog.developpez.com/ylarvor/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/ylarvor</link>
	<description>SQL or No-SQL !</description>
	<lastBuildDate>Sat, 04 Jun 2016 19:39:50 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Les types système: Evolution de SQL SERVER 7.0 à SQL SERVER 2005</title>
		<link>https://blog.developpez.com/ylarvor/p10756/modelisation/type-systeme/sgbd_sql_server_les_types_evolution_de_s_2005</link>
		<comments>https://blog.developpez.com/ylarvor/p10756/modelisation/type-systeme/sgbd_sql_server_les_types_evolution_de_s_2005#comments</comments>
		<pubDate>Mon, 07 May 2007 13:09:04 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Type système]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[SQL Server 7.0 définit : Les Numériques Exactes Les types d&#8217;entiers INTEGER 4 octets SMALLINT 2 octets TYNYINT 1 octet 0 à 255. Les numériques exactes DECIMAL (P, S) numérique de précision P, avec S chiffres derrière la virgule DEC (P,S) et NUMERIQUE(P,S) Les Numériques Approximatifs FLOAT(n) Flottants REAL Synonyme de FLOAT 4 octets Les [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>SQL Server 7.0 définit :</strong>     <br /><strong>Les Numériques Exactes</strong>     <br /><u>Les types d&rsquo;entiers</u>     <br />INTEGER 4 octets     <br />SMALLINT 2 octets     <br />TYNYINT 1 octet 0 à 255.     <br /><u>Les numériques exactes</u>     <br />DECIMAL (P, S) numérique de précision P, avec S chiffres derrière la virgule     <br />DEC (P,S) et NUMERIQUE(P,S)     <br /><strong>Les Numériques Approximatifs</strong>     <br />FLOAT(n) Flottants     <br />REAL Synonyme de FLOAT 4 octets     <br /><strong>Les Monétaires      <br /></strong>MONEY et SMALLMONEY     <br /><strong>date et temps      <br /></strong>DATETIME Date et heure 8 octets     <br />SMALLDATETIME     <br /><strong>Les caractères</strong>     <br />char(n) &#8211; ANSI &#8211; 8000 caractères.     <br />varchar(n) &#8211; ANSI &#8211; 8000 caractères.     <br />nchar(n) &#8211; Unicode &#8211; 4000 caractères.     <br />nvarchar(n) &#8211; Unicode &#8211; 4000 caractères.     <br />text &#8211; ANSI &#8211; 1,073,741,824 caractères.     <br />ntext &#8211; Unicode &#8211; 536,870,912 caractères.     <br /><strong>Les Binaires :</strong>     <br />Binary[n] 1 à 8000 octets et VarBinary[n]     <br />Image : 0 à 2 Giga     <br /><strong>spéciaux :</strong>     <br />bit, cursor, sysname,timestamp     </p>
<p><strong>SQL Serveur 2005 définit 7 catégories de types:</strong>     </p>
<p><strong>- Numérique exact</strong>     <br /><strong>big int</strong>, int, smallint, tinyint,     <br />decimal(p,s), numeric(p,s)     </p>
<p>Les types Numérique Exact permettent de spécifier la précision souhaitée pour un attribut numérique, et donc de représenter une valeur exacte. BigInt est nouveau depuis 2000     </p>
<p><strong>- Numérique approximatif</strong>     <br />float, real.     </p>
<p>Les numériques flottants correspondent aux types couramment utilisés en programmation (FLOAT, DOUBLE) et ne représentent une valeur qu?avec une précision limitée.     <br />Par exemple, si vous stocker 1,00015454 dans un float(8), seul les 8 digits sont garantis : 1,000154. Le reste est arrondi.     <br />On utilise ces valeurs arrondis plutôt dans des applicatifs scientifiques que financier.     <br /><strong>- Monnaie</strong>     <br />money,smallmoney     <br />4 digit de précision : exemple : smallmoney 214,748.3647     </p>
<p><strong>- Date et Time</strong>     <br />datetime, smalldatetime     </p>
<p><strong>- Caractères</strong>     <br />char(n),nchar(n),varchar(n),<strong>varchar(max)</strong>,nvarchar(n),<strong>nvarchar(max)</strong>,text,ntext     </p>
<p>char(n) &#8211; ANSI &#8211; 8000 caractères.     <br />varchar(n) &#8211; ANSI &#8211; 8000 caractères.     <br />varchar(max) &#8211; ANSI &#8211; 1,0773,741,824 caractères.     <br />text &#8211; ANSI &#8211; 1,073,741,824 caractères.     </p>
<p>nchar(n) &#8211; Unicode &#8211; 4000 caractères.     <br />nvarchar(n) &#8211; Unicode &#8211; 4000 caractères.     <br />nvarchar(max) &#8211; Unicode &#8211; 536,870,912 caractères.     <br />ntext &#8211; Unicode &#8211; 536,870,912 caractères.     </p>
<p>la différence entre char et varchar provient du stockage de la totalité des caractères pour le char contre le stockage des seuls caractères utilise pour le varchar.     </p>
<p><strong>- binary</strong>     <br />binary(n),varbinary(n),<strong>varbinary(max)</strong>,image     </p>
<p>Le type Binary stocke des flux binaires, des images, des fichiers.     </p>
<p><strong>- caractères spéciaux ( xml, guid )</strong>     <br />bit,timestamp,uniqueidentifier,<strong>sql_variant</strong>,cursor,<strong>table</strong>,<strong>xml</strong>     </p>
<p>Bit : stocke 0,1 ou Null.     </p>
<p>Timestamp : Une table ne peut posséder qu&rsquo;une seule colonne Timestamp qui est mis à jour sur la date/heure de la base à chaque insertion ou mise à jour.     </p>
<p>UniqueIdentifier: Un identifiant 16 bits qui identifie la ligne dans la base de données, l&rsquo;instance ou le serveur.     </p>
<p>SQL_variant : Nouveau depuis 2000,le type indéfini de cette colonne de 8000 caractères permet de stocker n&rsquo;importe quoi.     </p>
<p>Cursor: Utilisé par les applications qui déclarent des cursors. Ne peut être utilisé dans une table.     </p>
<p>Table : Nouveau type depuis 2000, Utilisé dans une variable de procédure stockée, trigger ou function.     </p>
<p>XML : Nouveau depuis 2005, il stocke un document xml de 2 gigaoctets.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redécouvrir SQL Serveur 2005 &#8211; Nouveaux Types de Données : Varchar(max),nvarchar(max) et varbinary(max)</title>
		<link>https://blog.developpez.com/ylarvor/p5098/modelisation/type-systeme/redecouvrir_sql_serveur_2005_nouveaux_ty</link>
		<comments>https://blog.developpez.com/ylarvor/p5098/modelisation/type-systeme/redecouvrir_sql_serveur_2005_nouveaux_ty#comments</comments>
		<pubDate>Fri, 01 Feb 2008 16:52:36 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Type système]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Sous SQL Serveur 7 et SQL Serveur 2000, une ligne de table ne peut excéder 8000 bytes. VARBINARY ne peut exceder 8000 bytes à condition que la ligne ne contient qu&#8217;une colonne VARBINARY. Une colonne VARCHAR ne peut excéder 8000 caractères. Une colonne NVARCHAR ( 2 bytes par caractère ) ne peut excéder 4000 caractères. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Sous SQL Serveur 7 et SQL Serveur 2000, une ligne de table ne peut excéder 8000<br />
bytes.<br />
VARBINARY ne peut exceder 8000 bytes à condition que la ligne ne contient qu&rsquo;une<br />
colonne VARBINARY.<br />
Une colonne VARCHAR ne peut excéder 8000 caractères.<br />
Une colonne NVARCHAR ( 2 bytes par caractère ) ne peut excéder 4000 caractères.<br />
      varchar(n)ANSI &#8211; 8000 caracteres.<br />
      nvarchar(n)Unicode &#8211; 4000 caracteres.</p>
<p>Pour stocker plus de données dans une seule ligne de table, vous devez utiliser<br />
les BLOB text,ntext et image. Ces données sont stockées dans une collection de<br />
pages séparées de la page principale qui stocke les données. Ces données BLOB<br />
sont stockées dans une B TREE Structure. Ces données BLOB ne sont pas du tout<br />
aisée à manipuler, d&rsquo;abord, on ne peut pas stocker un BLOB dans une variable de<br />
procédure ou de fonction et il est impossible d&rsquo;utiliser des fonctions de<br />
chaines de caractères comme REPLACE, CHARINDEX or SUBSTRING avec un BLOB. Dans<br />
la plupart des cas, vous devez utiliser READTEXT, WRITETEXT, et UPDATETEXT avec<br />
les BLOBs ( text,ntext et image ).<br />
Le type text,ntext et image doivent normalement disparaitre dans SQL Serveur<br />
2008.<br />
      textANSI &#8211; 1,073,741,824 caracteres.<br />
      ntextUnicode &#8211; 536,870,912 caracteres.</p>
<p>Dans SQL serveur 2005, Varchar(max),nvarchar(max) et varbinary(max) supportent 2<br />
gigabits de données. On peut utiliser ces types dans une procédure stockée ou<br />
une fonction comme variable et les fonctions de caractères peuvent être utiliser<br />
avec ces types là. Une réelle avancée pour les utilisateurs.<br />
      varchar(max)ANSI &#8211; 1,0773,741,824 caracteres.<br />
      nvarchar(max)Unicode &#8211; 536,870,912 caracteres.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SQL Serveur] Connaissez-vous le type Numeric(p,s) ?</title>
		<link>https://blog.developpez.com/ylarvor/p6178/modelisation/type-systeme/sql_serveur_le_type_numeric_p_s_ou_decim</link>
		<comments>https://blog.developpez.com/ylarvor/p6178/modelisation/type-systeme/sql_serveur_le_type_numeric_p_s_ou_decim#comments</comments>
		<pubDate>Sat, 09 Aug 2008 16:32:20 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Type système]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Vous connaissez tous les types INT ou BIGINT pour stocker des entiers. Vous connaissez le type FLOAT pour stocker des valeurs arrondis de décimaux. Par contre le type NUMERIC(p,s) et le type DECIMAL(p,s) sont moins connus. Ils permettent de stocker des valeurs entières ou décimales avec précision. Ce sont les types à utiliser de préférence [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Vous connaissez tous les types INT ou BIGINT pour stocker des entiers.</p>
<p>Vous connaissez le type FLOAT pour stocker des valeurs arrondis de décimaux.</p>
<p>Par contre le type NUMERIC(p,s) et le type DECIMAL(p,s) sont moins connus.</p>
<p>Ils permettent de stocker des valeurs entières ou décimales avec précision.</p>
<p>Ce sont les types à utiliser de préférence dans une application financière</p>
<p><strong>PowerAMC les utilisent pour générer ces identity!</strong></p>
<p>La première valeur p indique nombre maximal de digit qui peut être stocké. Avec une valeur maximale de 38 digits( 10^38 )</p>
<p>La valeur s indique le nombre de chiffres après la virgules.</p>
<p>Exemple: Pour stocker un entier de 0 à +/- 9999 : NUMERIC(4,0).</p>
<p>Exemple : Pour stocker un décimal de 0 à +/- 99,99 : DECIMAL(4,2).</p>
<p>Il semble que NUMERIC(p,s) et DECIMAL(p,s) soient des synonymes. Je recommande NUMERIC(p,0) pour les entiers et DECIMAL(p,s) pour les réels.</p>
<p>La norme SQL recommande d&rsquo; utiliser un synonyme que SQL Serveur accepte : DEC(p,s).</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le changement de version entre SQL serveur 2000 et 2005 est il nécessaire ?</title>
		<link>https://blog.developpez.com/ylarvor/p5306/ecosysteme/pointdevue/sql_serveur_2000_versus_2005</link>
		<comments>https://blog.developpez.com/ylarvor/p5306/ecosysteme/pointdevue/sql_serveur_2000_versus_2005#comments</comments>
		<pubDate>Mon, 17 Mar 2008 07:34:31 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[PointDeVue]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[En mars 2007, quand j&#8217;ai décidé de me plonger dans l&#8217;étude approfondie des bases de données pour en faire un métier, je me suis intéressé à SQL Serveur 2005 qui était le produit le plus récent. Après 2 mois d&#8217;étude du produit sur la version developper : J&#8217;écrivais cet article qui vantait les nouveautés SQL [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>En mars 2007, quand j&rsquo;ai décidé de me plonger dans l&rsquo;étude approfondie des bases de données pour en faire un métier, je me suis intéressé à SQL Serveur 2005 qui était le produit le plus récent. Après 2 mois d&rsquo;étude du produit sur la version developper : J&rsquo;écrivais cet article qui vantait les nouveautés SQL de cette version à juste titre:<br />
Référence : <a href="http://blog.developpez.com/index.php?blog=186&amp;title=Apport_sql_2005&amp;more=1&amp;c=1&amp;tb=1&amp;pb=1" target="top">ici</a></p>
<p>SQL Serveur 2005 est plus performant en terme de haute disponibilité mais SQL Serveur 2000 sait déjà faire les 3 sortes de réplications.</p>
<p>SQL Serveur 2005 est un trés bon produit OLAP mais SQL serveur 2000 possède déjà les lots dts et un noyau Analysis service.</p>
<p>D&rsquo;autre part, SQL Serveur 2005 est encore mieux sécurisé en comparaison des autres sgbd du marché et il offre une scalabilité encore plus grande à la montée en charge.</p>
<p>Néanmoins, Aujourdhui, je travaille à mi-temps sur SQL Serveur 2000 et je trouve que ce SGBD est une trés bonne base de données suffisante pour la majorité des bases internet. </p>
<p><span id="more-39"></span></p>
<p><strong>Pourquoi utiliser SQL Serveur 2000 ?</strong></p>
<p>D&rsquo;abord pour un développement internet classique, les fonctionnalités de SQL Serveur 2000 sont largement suffisantes, la preuve, j&rsquo;ai développé une base de taille moyenne avec 2005, en dev, et j&rsquo;ai appliqué le script sur 2000, en prod.</p>
<p>SQL Serveur 2000 possède déjà les BIGINT contrairement à SQL Serveur 7. Quand on ne sait pas prédire l&rsquo;avenir d&rsquo;une base et que l&rsquo;on voit grand pour ses clés primaires autoincrémentées. Le BigInt offre une étendue sécurisante.</p>
<p>Les outils d&rsquo;administration de SQL Serveur 2000 sont trés élaborés:<br />
&#8211; Le Tuning wizard<br />
&#8211; Le Best Practice Analyser<br />
&#8211; Le Profiler.<br />
&#8211; Plan de maintenance.</p>
<p>En conclusion, on peux légitimement se poser la question de l&rsquo;intérêt d&rsquo;upgrader son serveur SQL, d&rsquo;ajouter des fonctionnalités, pour des bases internet courante de 1 giga seulement. Néanmoins, la compétition qui a lieu dans le domaine des systèmes d&rsquo;exploitation entraine une remise à jour des logiciels de back-office. Ainsi, SQL Serveur 2000 ne sera plus compatible avec les dernières versions de windows. L&rsquo;industrie du logiciel est donc entrainée dans un changement permanent de produits.  </p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SQL Serveur] Liens concernant la migration 2000-2005.</title>
		<link>https://blog.developpez.com/ylarvor/p5788/entretien/maintenance/sql_serveur_liens_concernant_la_migratio_2005</link>
		<comments>https://blog.developpez.com/ylarvor/p5788/entretien/maintenance/sql_serveur_liens_concernant_la_migratio_2005#comments</comments>
		<pubDate>Thu, 29 May 2008 13:59:50 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Maintenance]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Vidéo Microsoft sur la migration 2000-2005 : http://www.microsoft.com/france/vision/WebcastTechNetTechDays.aspx?EID=fd12de03-6bb2-435b-a135-da0db259d8d3 Tutorial sur le conseiller de mise à niveau 2000-2005 : http://www.asp-php.net/tutorial/sql-server/sqlupgradeadvisor.php La migration 2000-2005 par christian Robert : http://blogs.codes-sources.com/christian/archive/2007/03/27/sql-server-migrer-de-2000-2005-les-commandes-indispensables.aspx Tutorial &#8211; La migration par sauvegarde-restauration 2000-2005 : http://www.technos-sources.com/tutorial-restaurer-base-provenant-backup-moteur-sql-server-2000-37.aspx Tutorial supinfo &#8211; La migration 2000-2005 par Copy Database : http://www.laboratoire-microsoft.org/articles/server/migration-sql-server-2000-2005/]]></description>
				<content:encoded><![CDATA[<p>Vidéo Microsoft sur la migration 2000-2005 :<br />  http://www.microsoft.com/france/vision/WebcastTechNetTechDays.aspx?EID=fd12de03-6bb2-435b-a135-da0db259d8d3</p>
<p>Tutorial sur le conseiller de mise à niveau 2000-2005 : <br />
http://www.asp-php.net/tutorial/sql-server/sqlupgradeadvisor.php</p>
<p>La migration 2000-2005 par christian Robert : <br />
http://blogs.codes-sources.com/christian/archive/2007/03/27/sql-server-migrer-de-2000-2005-les-commandes-indispensables.aspx  </p>
<p>Tutorial &#8211; La migration par sauvegarde-restauration 2000-2005 : <br />
http://www.technos-sources.com/tutorial-restaurer-base-provenant-backup-moteur-sql-server-2000-37.aspx  </p>
<p>Tutorial supinfo &#8211; La migration 2000-2005 par Copy Database : </p>
<p>http://www.laboratoire-microsoft.org/articles/server/migration-sql-server-2000-2005/</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Connaissez vous l&#8217;instruction GO [count] ?</title>
		<link>https://blog.developpez.com/ylarvor/p5056/interrogation/sql/go_count</link>
		<comments>https://blog.developpez.com/ylarvor/p5056/interrogation/sql/go_count#comments</comments>
		<pubDate>Fri, 08 Feb 2008 13:32:29 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[cette commande sql serveur non transact sql, mais reconnu par le manager et sqlcmd et osql offre des possibilités alors insoupconnées en SQL. Attention! Toad ne l&#8217;accepte pas! lien msdn : http://msdn2.microsoft.com/en-us/library/ms188037.aspx Exemple : le problème N°6 de sqlpro ( concours developpez.com ) Pour cet exercice, il s&#8217;agit d&#8217;alimenter les nombres de 0 à 9999 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>cette commande sql serveur non transact sql, mais reconnu par le manager et sqlcmd et osql offre des possibilités alors insoupconnées en SQL. Attention! Toad ne l&rsquo;accepte pas!</p>
<p>lien msdn : http://msdn2.microsoft.com/en-us/library/ms188037.aspx</p>
<p><span id="more-23"></span></p>
<p>Exemple : le problème N°6 de sqlpro ( <a href="http://sqlpro.developpez.com/Exercices/Index.html">concours developpez.com</a> )</p>
<p>Pour cet exercice,  il s&rsquo;agit d&rsquo;alimenter les nombres de 0 à 9999 dans une table de nom T_ENTIER_ENT contenant un seul champ de type entier et de nom ENT_N. Au départ, cette table contient les nombres de 0 à 9.<br />
J&rsquo;ai intitulé ce problème, &lsquo;énumération&rsquo;&#8230; </p>
<p>La table T_ENTIER_NET est ainsi constituée :   </p>
<p>CREATE TABLE T_ENTIER_ENT<br />
(ENT_N INTEGER);</p>
<p>INSERT INTO T_ENTIER_ENT VALUES (0) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (1) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (2) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (3) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (4) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (5) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (6) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (7) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (8) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (9) ;</p>
<p>ENT_N<br />
&#8212;&#8212;<br />
0<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9</p>
<p>Sauriez vous faire une telle requête avec un seul update ?</p>
<p>Voici un extrait de la table des données à insérer : </p>
<p>NOMBRE<br />
&#8212;&#8212;&#8212;&#8211;<br />
10<br />
11<br />
12<br />
13<br />
14<br />
&#8230;<br />
9995<br />
9996<br />
9997<br />
9998<br />
9999 </p>
<p>Ma réponse :</p>
<p>INSERT INTO T_ENTIER_ENT(ENT_N) SELECT MAX(ENT_N)+1 FROM T_ENTIER_ENT;<br />
go 9991</p>
<p>prodigieux, non ?</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pourquoi ne trie t&#8217;on jamais une vue en SQL ?</title>
		<link>https://blog.developpez.com/ylarvor/p5030/interrogation/sql/vue_et_tri</link>
		<comments>https://blog.developpez.com/ylarvor/p5030/interrogation/sql/vue_et_tri#comments</comments>
		<pubDate>Mon, 04 Feb 2008 19:15:19 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[En SQL ANSI, il est connu qu&#8217;une vue ne doit jamais être trié. On n&#8217;utilise donc jamais de ORDER BY dans une vue. J&#8217;avoue que j&#8217;ai essayé de trouver une bon raison à cela et je l&#8217;ai finalement trouvé&#8230; Comme vous le savez, une vue n&#8217;est qu&#8217;un enregistrement de requête, elle n&#8217;a pas d&#8217;existence physique [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>En SQL ANSI, il est connu qu&rsquo;une vue ne doit jamais être trié</strong>. On n&rsquo;utilise donc jamais de ORDER BY dans une vue.<br />
J&rsquo;avoue que j&rsquo;ai essayé de trouver une bon raison à cela et je l&rsquo;ai finalement trouvé&#8230;</p>
<p>Comme vous le savez, une vue n&rsquo;est qu&rsquo;un enregistrement de requête, elle n&rsquo;a pas d&rsquo;existence physique comme une table à part les vues matérialisées mais c&rsquo;est un autre problème!</p>
<p>Imaginez le scénario suivant :</p>
<p>Vous créez sur sql serveur une vue avec un order by. SQL Serveur 2000 ne posera aucune question et conservera le tri en réserve comme vous le souhaitez.</p>
<p>CREATE VIEW MAVUE AS SELECT NOM,PRENOM FROM FAMILLE ORDER BY NOM,PRENOM;</p>
<p>Jérome, votre collègue de toujours à besoin de cette vue mais lui, il veut trié par PRENOM,NOM&#8230;il écrit donc sa requète :</p>
<p>SELECT * FROM MAVUE ORDER BY PRENOM,NOM;</p>
<p>Jérome a le droit d&rsquo;écrire cela.</p>
<p>Maintenant, Qu&rsquo;avez vous demander à SQL SERVEUR 2000 ?</p>
<p>Il doit trier par NOM,PRENOM puis par PRENOM,NOM dans la même requête, avouez que c&rsquo;est fort en chocolat de demander cela. </p>
<p>Voilà, pour moi, la raison pratique pour laquelle on ne doit jamais écrire un order by dans une vue. Parce qu&rsquo;il y a aura 10 utilisateurs différents de la vue et qu&rsquo;aucun d&rsquo;eux n&rsquo;aura les mêmes besoins. Alors même si sql serveur 2000 autorise le order by dans une vue, ne l&rsquo;utilisez jamais dans la vue mais en dehors, au plus prés du besoin!</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[SGBD] [Optimisation] Pourquoi l&#8217;écriture de fonctions encapsulées est à bannir en SQL ?</title>
		<link>https://blog.developpez.com/ylarvor/p5382/optimisation/tuning/sgbd_optimisation_avant_d_optimiser_comm</link>
		<comments>https://blog.developpez.com/ylarvor/p5382/optimisation/tuning/sgbd_optimisation_avant_d_optimiser_comm#comments</comments>
		<pubDate>Thu, 27 Mar 2008 20:00:00 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Je voudrais revenir sur un article de Rudi éclairant pour moi : http://rudi.developpez.com/sqlserver/tutoriel/optimisation/ Dans cet article, il écrit &#171;&#160;Une erreur commune, qui peut affecter fortement les performances, est d&#8217;écrire du code SQL avec la même approche intellectuelle que pour l&#8217;écriture de code procédural.&#160;&#187; Dans mon entreprise, nous avons une base qui a été conçu sur [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Je voudrais revenir sur un article de Rudi éclairant pour moi :</p>
<p><a href="http://rudi.developpez.com/sqlserver/tutoriel/optimisation/" target="top">http://rudi.developpez.com/sqlserver/tutoriel/optimisation/</a></p>
<p>Dans cet article, il écrit &laquo;&nbsp;Une erreur commune, qui peut affecter fortement les performances, est d&rsquo;écrire du code SQL avec la même approche intellectuelle que pour l&rsquo;écriture de code procédural.&nbsp;&raquo;<br />
<span id="more-11"></span><br />
Dans mon entreprise, nous avons une base qui a été conçu sur ce principe de l&rsquo;encapsulation. Les requêtes de cette base, assez complexes, ont été rendu lisibles par l&rsquo;application des principes du développement procédurale : &laquo;&nbsp;découpe et place dans des blocs plus petits&nbsp;&raquo;.</p>
<p>Cette base utilise donc de nombreuses fonctions tables. des fonctions. des fonctions à l&rsquo;intérieur de fonctions tables. des fonctions tables à l&rsquo;intérieur de fonctions tables&#8230;</p>
<p>Le résultat est <strong>lisible</strong> mais <strong>contre-performant </strong> comme l&rsquo;explique rudi dans la partie II-D-1.</p>
<p>Par conséquent, si vous avez en charge le développement de requêtes, de procédures stockées : <strong>Oubliez </strong>ce que vous avez appris comme bon développeur, <strong>ne réutilisez pas</strong>, <strong>n&rsquo;encapsulez pas</strong>, <strong>soyez économe</strong> avec les fonctions T-SQL.</p>
<p>Pour obtenir une requête rapide, vous devez écrire une requête littérale! d&rsquo;un bloc! Pour rendre lisible, indentez! Organisez les jointures mais n&rsquo;encapsulez pas! Ne factorisez pas en SQL !</p>
<p>Bon coding!</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SGBD] Pourquoi utiliser les Compteur &#8230; Reads plutôt que la durée de la requête ?</title>
		<link>https://blog.developpez.com/ylarvor/p5347/optimisation/tuning/dba_compteur_duration_aamp_analyse_reads</link>
		<comments>https://blog.developpez.com/ylarvor/p5347/optimisation/tuning/dba_compteur_duration_aamp_analyse_reads#comments</comments>
		<pubDate>Fri, 21 Mar 2008 16:45:57 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Apprenti DBA, je viens d&#8217;apprendre pourquoi les DBA Production utilisent les compteurs &#171;&#160;logical reads,physical reads&#8230;&#160;&#187; plutôt que la durée de la requête. Ecoutez donc&#8230; En bon développeur, je me disais que la trace DURATION du profiler fournissait toute l&#8217;information nécessaire, une requête de plus de 10 secondes, était une requête à corriger! En effet, cela [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Apprenti DBA, je viens d&rsquo;apprendre pourquoi les DBA Production utilisent les compteurs &laquo;&nbsp;logical reads,physical reads&#8230;&nbsp;&raquo; plutôt que la durée de la requête. Ecoutez donc&#8230;<br />
<span id="more-10"></span><br />
En bon développeur, je me disais que la trace DURATION du profiler fournissait toute l&rsquo;information nécessaire, une requête de plus de 10 secondes, était une requête à corriger!<br />
En effet, cela se vérifie sur un serveur faiblement sollicité mais dans des configurations fortement sollicitées comme celles que rencontrent les DBA Production, la durée ne veut plus rien dire suivant l&rsquo;heure de la journée.En effet, dans ces configurations, la durée de la requête devient variable en fonction de la charge du serveur.</p>
<p>Pour trouver des repères pour l&rsquo;optimisation de la requête, on doit alors prendre des données fixes comme le nombres d&rsquo;accès en lecture physique, logique&#8230; </p>
<p>Je vous rappelle que ce qui est le plus consommateur en temps dans une requête, ce sont les accès physiques au disque. </p>
<p>Si on réduit le nombre d&rsquo;accès, on réduit proportionnellement la durée de la requête quelque soit la charge du serveur.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[sql serveur] Quels sont les outils pour indexer les tables en amont, pendant la modélisation ?</title>
		<link>https://blog.developpez.com/ylarvor/p5210/optimisation/index/sql_serveur_indexation_d_une_base_gagner</link>
		<comments>https://blog.developpez.com/ylarvor/p5210/optimisation/index/sql_serveur_indexation_d_une_base_gagner#comments</comments>
		<pubDate>Tue, 04 Mar 2008 13:07:46 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Index]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Si vous possèdez Power AMC, cet article ne s&#8217;adresse pas à vous car Power AMC indexe toutes les clefs étrangères sur simple demande, par contre, si vous utilisez Toad Data Modeler 4.1, vous devez préciser pour chaque entite, la création de l&#8217;index de clef etrangère. Sachez que vous pouvez gagner un temps précieux dans le [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Si vous possèdez Power AMC, cet article ne s&rsquo;adresse pas à vous car Power AMC indexe toutes les clefs étrangères sur simple demande, par contre, si vous utilisez Toad Data Modeler 4.1, vous devez préciser pour chaque entite, la création de l&rsquo;index de clef etrangère.<br />
Sachez que vous pouvez gagner un temps précieux dans le temps d&rsquo;execution de vos requêtes en indexant les clés étrangères de vos tables. c&rsquo;est un travail facile, les clés étrangères sont identifiés, il suffit de créer un index sur la clé manuellement ou à l&rsquo;aide d&rsquo;un outil.Toutes les jointures s&rsquo;en trouveront améliorées. Avant de vous cassez la tête en index recouvrant et autre analyses complexes&#8230; Pensez y! Ca a le mérite d&rsquo;être simple et efficace.</p>
<p>Vous pouvez utiliser aussi le tuning advisor de 2005 ou l&rsquo;index tuning wizard de 2000.<br />
<a href="http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/tunesql.mspx" target="_new">http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/tunesql.mspx</a></p>
<p>Vous devez néanmoins mesurer à postériori, le gain de la pause de votre index, sur les différentes requêtes&#8230; En effet,Selon Yves Drothier de JDN :</p>
<p>&laquo;&nbsp;Par défaut, les clés primaires des tables disposent d&rsquo;un index et il est pertinent de le conserver mais les clés secondaires posent un problème plus complexe. Parfois, selon le volume, la sollicitation de la base ou l&rsquo;évolution des applications métiers, les index des clés secondaires perdent de leur attrait. Il est donc préférable de poser ses index en mesurant régulièrement l&rsquo;efficacité de ses requêtes.&nbsp;&raquo;</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
