deux type de requete laquelle est la mieux ?

deux type de requete laquelle est la mieux ? - SQL/NoSQL - Programmation

Marsh Posté le 18-11-2005 à 11:21:55    

voici deux requetes qui récupére exactement les mêmes résultats.
SELECT c.name,b.name FROM

Code :
  1. sysobjects a JOIN syscolumns b ON a.id=b.id
  2. JOIN systypes c ON b.xtype=c.xtype WHERE a.name='tb_message';
  3. //=========
  4. SELECT c.name,b.name FROM sysobjects a, syscolumns b, systypes c
  5. WHERE a.id=b.id AND b.xtype=c.xtype AND a.name='tb_message';

 
 
Pendant un bon moment j'utilisais la seconde methode pour faire mes jointures. Des personnes m'ont dit que le c'est pas bon surtout concernant les performance mais sans donner plus d'explication. Dans SQL server j'ai fait afficher "le plan d'execution" de ces deux requetes et le resultat retourné est exactement le même.  
Pour vous y a t'il une reelle différence ?

Reply

Marsh Posté le 18-11-2005 à 11:21:55   

Reply

Marsh Posté le 18-11-2005 à 11:54:27    

Non, aucune.
 
(seule la syntaxe change, suivant qu'elle se plie à la norme SQL ou pas)

Reply

Marsh Posté le 18-11-2005 à 11:57:51    

Merci pour ton intervention :jap:
Moi je pensais que le moteur agirait différement selon la synthaxe. :??:

Reply

Marsh Posté le 18-11-2005 à 12:04:44    

Plutôt que de faire une jointure avec sysobjects, pourquoi ne pas utiliser object_id() ?
 
Genre :  
select c.name, b.name  
from syscolumns b, systypes c
where b.id = object_id("tb_message" )
etc...

Reply

Marsh Posté le 18-11-2005 à 13:56:57    

Elmoricq a écrit :

Plutôt que de faire une jointure avec sysobjects, pourquoi ne pas utiliser object_id() ?
 
Genre :  
select c.name, b.name  
from syscolumns b, systypes c
where b.id = object_id("tb_message" )
etc...


J'ai testé ce que tu viens de m'indiquer mais apparement il attend plutôt un nom de champs qu'un nom de table.

Reply

Marsh Posté le 18-11-2005 à 14:01:07    

Tu as dû oublier les guillemets, parce que dans ce cas-là il retourne en effet un message du genre : "Invalid column name '...' "
 
Mais avec les guillemets ça fonctionne très bien :

select object_id("sysobjects" )
             
 -----------  
           1  
 
(1 row affected)


 
http://msdn.microsoft.com/library/ [...] z_1410.asp

Reply

Marsh Posté le 18-11-2005 à 14:11:26    

Elmoricq a écrit :

Tu as dû oublier les guillemets, parce que dans ce cas-là il retourne en effet un message du genre : "Invalid column name '...' "
 
Mais avec les guillemets ça fonctionne très bien :

select object_id("sysobjects" )
             
 -----------  
           1  
 
(1 row affected)


 
http://msdn.microsoft.com/library/ [...] z_1410.asp


J'ai fais à l'identique et c'est toujours là même erreur. Je remet pas en cause la synthaxe puisque msdn l'indique bien ainsi. :/

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed