Sql Server : Quelques astuces pour optimiser vos requêtes

Voici quelques astuces qui peuvent aider à optimiser vos requêtes sql.

1- Parmi les colonnes se trouvant dans la clause SELECT ne doivent êtres présentent uniquement les colonnes nécessaires. chaque colonnes de la requête nécessite des opérations I/O et de la bande passante.

2 – L’utilisation du SELECT * FROM … est très fortement déconseillé.

2- Seule les lignes nécessaires doivent être retournées. Ne pas faire retourner 10000 lignes par l’application alors que l’on a besoins de voir uniquement les 10 ères. (exemple d’un datagrid paginé).
La fonction ROWNUMBER permet de faire de la pagination en tsql.
Plus d’infos sur cette fonction ici: http://msdn.microsoft.com/fr-fr/library/ms186734.aspx

3- Ne pas utiliser le DISTINCT ou UNION si l’unicité n’est pas nécessaire.

4- Dans le cas d’utilisation d’un CURSEUR, pensez à le fermer et  le désalouer le plus tôt possible.

5- L’utilisation des Procédures stockés est recommandée, surtout si le temps d’exécution d’une requête n’est pas prédit.
Les procédures stockés ont l’avantage d’avoir un temps d’execution fiable, car leur exécution ne demandent pas de recompilation.
Plus d’infos ici: http://www.codeproject.com/Articles/414272/Stored-Procedures-DO-NOT-increase-performance

Lire la suite

C# MVC : Remote Validation

Voici comment faire une validation particulière sur une propriété du model.
Exemple vérifier l’unicité du login dans la table des utilisateurs.

Pour cela dans le controleur UtilisateurControleur créer la méthode CheckUniqueLogin.
Cette méthode renvoie un type JsonResult

public JsonResult CheckUniqueLogin(string login)
 {
// requete base d’unicité du login
 int nblogin = GetNbLogin(login)</p>
if (nblogin  == 0)
 {
 return Json(true, JsonRequestBehavior.AllowGet);
 }
 else
 {
 return Json(“Ce login existe déjà”, JsonRequestBehavior.AllowGet);
 }
 }

Si le login n’existe pas , le Json retourné renvoie True sinon un message d’erreur.

Dans la classe du Model : UtilisateurModel
Sur la propriété Login rajouter l’attribut Remote avec le nom du controleur et la méthode à appeler pour la validation
[Remote("CheckUniqueLogin","Utilsateur")]

D’autre paramètres sont disponible pour cet attribut, voir ici pour plus de détails :
http://msdn.microsoft.com/fr-fr/library/gg508808%28v=vs.98%29.aspx

De plus pour que cette validation fonctionne, il faut que la propriété Login possède aussi l’attribut [Required]

C# : Génération de PDF

Voici 2 librairies qui permettent la génération de PDF :

1- ITextSharp
Cette librairie permet de générer un PDF soit avec des objets pdf (paragraphes , tables, text, …), soit à partir d’une Url.
Pour plus d’explication sur sont utilisation en MVC , voir ici

http://www.codeproject.com/Articles/66948/Rendering-PDF-views-in-ASP-MVC-using-iTextSharp

2- DodleReport
Cette librairie disponible par Nuget et sur CodePlex permet d’exporter n’importe quel type de liste dans des fichiers de différent format : Xls, PDF, Html,…
Son utilisation est vraiment très simple.
Toutes les infos ici: http://doddlereport.codeplex.com

pour info, DodleReport se sert de ItextSharp

Il existe d’autre méthodes pour générer un pdf comme par exemple : http://www.simple-talk.com/dotnet/asp.net/asp.net-mvc-action-results-and-pdf-content

Liens du 06/03/2012

Au programme du MVC, de l’Asp.net, du Visual Studio 2011, du Jquery, des conseils ….

1- MVC -Web Api – Gestion des exceptions  http://weblogs.asp.net/cibrax/archive/2012/02/27/handling-exceptions-in-your-asp-net-web-api.aspx

2- Jquery Template/View Engine in Asp.net MVC http://www.codeproject.com/Articles/188467/Using-JavaScript-View-Engines-in-ASP-NET-MVC

3- ASP.NET MVC + Selenium + IISExpress http://stephenwalther.com/blog/archive/2011/12/22/asp-net-mvc-selenium-iisexpress.aspx

4- Integrating Javascript Unit Tests With Visual Studio http://stephenwalther.com/blog/archive/2010/12/20/integrating-javascript-unit-tests-with-visual-studio.aspx

5- 10 Essential Tools for building ASP.NET Websites http://stephenwalther.com/blog/archive/2010/11/22/10-essential-tools-for-building-asp-net-websites.aspx

6- Visual Studio 11 Beta: Using page inspector http://www.asp.net/mvc/tutorials/mvc-4/using-page-inspector-in-an-mvc-application-in-visual-studio-11-beta

7- 8 conseils pour jeunes developpeurs: http://pym.me/posts/8-conseils-pour-jeunes-developpeurs/

8- Preprocessor Directive in C#  http://www.codeproject.com/Articles/304175/Preprocessor-Directives-in-Csharp

9- Inside Visual Studio 11: A Guided Tour http://visualstudiomagazine.com/articles/2012/03/01/more-power.aspx

10- Asp.Net MVC 3 : Develop Hybrid Native and Mobile Web Apps http://msdn.microsoft.com/fr-fr/magazine/hh852592(en-us).aspx