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

Liens du 21/02/2012

Récemment j’ai découvert un blog qui propose très régulièrement des liens vers des articles de développement sur tout ce qui touche à la technologie Micrososft.

J’ai trouvé cette idée très intéressante, je vais donc proposer régulièrement des liens vers des articles ou des sites qui seront aussi bien des liens de développement .net que sur du développement Front Office (Javascrip, Jquery, Css, HTML, …)

Voici donc mon 1er topic de liens :

Lire la suite

TechDays 2012 : Développer le potentiel de IIS7.5

1-      Introduction

Toute optimisation doit passer par une phase d’étude et d’identification, aucune optimisation ne se fait à priori.

2-      IIS7.5

IIS 7.5 possède 2 modes:

- Classic mode pipeline: les requêtes passent par un module isapi qui est externe à IIS

- Intégré:

Il permet de souscrire à des event Begin,..

Il possède le  module d’authentification qui est natif

Il est possible d’écrire des modules (c++, c#, ..) pour influencer le traitement de la requête tout au long du pipeline.

Le processus exécuté par IIS est w3wp, il contient plusieurs Thread et chacun d’eux ont leur but.

Toutes les requêtes passent par des modules d’où le ralentissement des fichiers statique.

En ASP.Net MVC, il est possible de modifier ce contenu en mettant la clé de config (web.config)  RunAllManagedModule à True

Les avantages:

- Applique tous les modules automatiquement à tous les types de contenus

- moins de configuration unitaire

Les inconvénients:

- Overhead d’activation des modules managés

- Effet de bord du à l’activation de modules non implémentés à cet effet.

Lire la suite

Asp.net : Passer le viewstate en session

Le viewstate pose souvent des problèmes, parmi les plus connus :

  • Taille de page importante
  • Corruption du viewstate
  • Blocage au niveau de google qui n’aime pas trop ce champ
  • Champs non crypté par défaut, présentant une exposition et une altération possible des valeurs contenues dedans par un utilisateur mal intentionné.

Même si le meilleur conseil serait d’essayer de ne pas l’utiliser, il fait quand même partie du Framework et il faut composer avec.

Principe de base

L’idée est de surcharger le comportement du framework pour la gestion du viewstate afin de la passer en session. On pourrait imaginer tout autre mécanisme de stockage (bdd, fichier,…) mais la mémoire reste le moyen le plus rapide de travailler sur ces données.

Il faut quand même gérer certains cas liés aux sessions :

  • Un même utilisateur peut ouvrir plusieurs fois la même page, les viewstate doivent être différents
  • Les sessions peuvent être désactivées

Lire la suite

Visual Studio : Add on- Optimiseur d’image

Je viens de découvrir un add-on à Visual Studio qui permet d’optimiser les images et ceci avec un click droit directement à partir de Visual Studio:

- il optimises toutes les formats d’images web (jpg, png, gif) sans perte de qualité

- il peut traiter aussi bien une image que un répertoire entier

- il permet aussi leur intégration directement dans les css

Son téléchargement

quelques screenshoot:

Asp.Net – Mise en cache

Voici un point sur les differentes facon d’utiliser le cache en asp.net

Introduction:

En Asp.net il existe 2 type de caches:

- le cache du rendu de la page : OutputCache

- Le cache applicatif qui permet de mettre en cache des objets.

1- Le OutputCache

Pour mettre en cache le rendu d’une page il faut mettre la directive @OutputCache dans la page:

<%@ OutputCache Duration="60" VaryByParam="None"%>

Les paramètres obligatoires sont : Duration et VaryByParam( ou VaryByControl)

Duration: définit la durée de maintien d’une entrée de cache dans le cache de sortie

VaryByParam: paramètres de chaîne de requête ou de Form POST que le cache de sortie utilise pour faire varier l’entrée du cache (délimitée par des virgules)

Remarque: ces parametres peuvent etre placé dans le web.config s’il s’appliquent à l’ensemble du site

Lire la suite