Bonjour,
Mon problème est le suivant: je cherche un équivalent de la fonction EXPLAIN (de MySQL) en SQLServer.
Est-ce possible? Pouvez-vous m'aider?
Bonjour,
Mon problème est le suivant: je cherche un équivalent de la fonction EXPLAIN (de MySQL) en SQLServer.
Est-ce possible? Pouvez-vous m'aider?
Si j'ai bien compris la fonction MySQL... la traduction devrait etre:
SET SHOWPLAN_XML ON
Vous avez 7 méthodes pour obtenir un plan de requêtes dans SSMS (SQL Server management Studio) :
1 - graphique
1.1 - estimation (pas d'exécution) => CTRL + L (ou menu "Requête" / "Afficher le plan d'exécution estimé")
1.2 - plan exécuté => CTRL + M (ou "Requête" / "Inclure le plan d'exécution réel")
Dans les deux cas, vous pouvez sauvegarder le plan résultant sous forme d'un fichier XML.
2 - non graphique
2.1 - estimé :
2.1.1 - sous forme textuelle : SET SHOWPLAN_TEXT ON
2.1.2 - sous forme XML : SET SHOWPLAN_XML ON
2.1.3 - sous forme textuelle détaillée : SET SHOWPLAN_ALL ON
2.2 - réalisé :
2.2.1 - sous forme textuelle : SET STATISTICS PROFILE ON
2.2.2 - sous forme XML : SET STATISTICS XML ON
(utiliser OFF pour désactiver)
La commande qui correspond le plus à EXPLAIN est :
- SET SHOWPLAN_ALL ON (estimé)
- SET STATISTICS PROFILE ON (réalisé)
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/ * * * * *
Merci pour vos réponses, mais je débute et j'ai encore une petite question.
En fait, je travaille sur une application en java qui traite du sqlserver et je voudrais donc stocker dans un Objet java ce qui est renvoyé par SET SHOWPLAN_XML sur une seule requête. Est-ce possible? si oui, dans quel Objet et où l'insérer dans le code? Après SHOWPLAN_XML ON? la requête? OFF?
Essayez comme ceci à travers une IHM :
A +
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SET SHOWPLAN_XML ON; DECLARE @T TABLE (C XML); INSERT INTO @T EXEC ('SELECT * FROM sys.databases'); SELECT * FROM @T;
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/ * * * * *
Bonjour,
Petite remarque : il manque un GO après le SET SHOWPLAN_XML ON
@++![]()
Encore merci, mais je n'y arrive toujours pas malheureusement...
Je ne sais pas quelle classe utiliser pour exécuter le DECLARE.
Pour les précédentes requêtes que j'exécutais, j'utilisais une SqlMapSession mais si je fais le DECLARE et ensuite INSERT, il y a une erreur qui s'affiche me disant que le tableau n'a pas été déclaré.
Il fut utiliser un commandtext et non un Query.
Sinon, encapsuler le tout dans une procédure stockée.
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/ * * * * *
je suis désolée mais je débute et je ne connais aucune des 2 solutions...
Après avoir regardé sur internet j'ai découvert ce qu'était une procédure stockée mais je ne m'en sors pas...
Et en ce qui concerne commandtext je n'ai rien trouvé sur internet
Je n'ai toujours pas réussi à résoudre mon problème... si quelqu'un a une solution je suis toute ouie![]()
1) nous ne savons pas avec quel outil / langage vous développez côté client
2) ceci n'est pas du ressort du SGBDR
3) postez dons dans le forum approprié !
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/ * * * * *
Tout d'abord je tiens à préciser que je débute complètement alors excusez moi si je ne vous ai pas apporté toutes les informations qui vous serez nécessaires mais il suffisait de demander.
1) je développe en java avec eclipse et mon travail exploite des données se trouvant sur des bases SQLServer 2000 et 2005.
2) je pense que vous auriez pu m'expliquer comment faire une procédure stockée à partir du code que vous m'aviez proposé ci-dessus
3) vous aviez l'air de pouvoir répondre à mes questions... sinon je vous assure que je n'aurais pas insisté.
1) pour java, postez dans le forum Java
2) procédure stockée : voir http://sqlpro.developpez.com/cours/s...ransactsql/#L4
Exemple :
3) Oui, mais je ne suis pas toujours dispo, et comme je bosse pour des clients qui eux payent, je leur donne la priorité. Au passage mon tarif actuel est de 1250 € HT par jour...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 CREATE PROCEDURE ??? @QUERY VARCHAR(8000) AS SET SHOWPLAN_XML ON; DECLARE @T TABLE (C XML); INSERT INTO @T EXEC (@QUERY); SELECT * FROM @T;
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/ * * * * *
Partager