IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

les operations binaires [2008R2]


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut les operations binaires
    Bonjour,
    Afin d'optimiser ma BDD j'ai pensé aux operateurs binaires. J'ai voulu mettre dans une seule colonne les informations de 4 colonnes (type bit), ce qui me donne maintenant ce genre de valeur: 1, 2, 4, 8, 16, 32.....

    Pour des recherches simple avant je faisais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where col1=1 AND col2=1
    Maintenant cela donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where 6 & Attributes<>0
    A ma grande surprise les temps de reponses sont tres tres mauvais dans ma nouvelles facon de faire.

    A votre avis ai je pris la mauvaise solution ? ma requete est elle mauvaise ?

    Merci pour vos avis

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Oui !

    Dès que vous n'atomisez pas vos données il faut faire de calculs et donc du scan.
    Une fois les données atomisées, vous pouvez les indexer et les temps de réponse deviennent ultra rapide du fait des SEEK

    Passer du SCAN au SEEK est logarithmique en terme de coutd'accès...


    Dans la vie il faut souvent choisir :
    • compression de données par multiplexage = gain d'espace mais perte de temps en recherches...
    • atomisation de données = perte d'espace, mais gain de temps !


    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/ * * * * *

  3. #3
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    Quels sont les conseils pour optimiser une Base de donnees ?

    J'ai lu quîl fallait decouper les grosses tables en petites tables pour eviter les lock en cas d'update, delete et d'insert. Est ce exact ?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par topolino Voir le message
    Quels sont les conseils pour optimiser une Base de donnees ?

    J'ai lu quîl fallait decouper les grosses tables en petites tables pour eviter les lock en cas d'update, delete et d'insert. Est ce exact ?
    Oui, plus exactement, plus une table est petite plus la durée et la fréquence de mobilisation en exclusif est faible.
    L'indexation y contribue aussi beaucoup.

    La gestion du stockage est aussi très importante. Il faut bien dimensionner les espaces de stockage et ventiler les IO sur différents disques physiques...
    A me lire : http://blog.developpez.com/sqlpro/p5..._fichiers_et_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/ * * * * *

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Citation Envoyé par topolino Voir le message
    Quels sont les conseils pour optimiser une Base de donnees ?

    J'ai lu quîl fallait decouper les grosses tables en petites tables pour eviter les lock en cas d'update, delete et d'insert. Est ce exact ?
    C'est une toute autre question.
    La normalisation est le B.A-BA que vous devriez connaître.
    Ensuite, s'il vous reste du courage, vous pouvez commencer à étudier le partionnage horizontal.

  6. #6
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    Merci à vous.

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Citation Envoyé par SQLpro Voir le message
    [*]atomisation de données = perte d'espace, mais gain de temps !
    oui, surtout qu'en l’occurrence, il n'y a même pas de perte d'espace :
    topolino a mis 4 colonnes de type BIT en une seule colonne (que nous supposerons de type TINYINT)
    Dans un cas comme dans l'autre, c'est 1 octet.
    La solution de 4 colonnes de BIT me semble donc bien plus adaptée.

    En résumé, la méthode que Topolino a voulu mettre en place n'aurait d’intérêt que si le nombre de paramètres était indéfini, amené à évoluer, car alors il n'y a pas besoin d'ajouter de colonne. Une certaine flexibilité donc, qui, comme souvent, s'accompagne de performances à la baisse

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Citation Envoyé par topolino Voir le message
    Bonjour,
    Afin d'optimiser ma BDD j'ai pensé aux operateurs binaires. J'ai voulu mettre dans une seule colonne les informations de 4 colonnes (type bit), ce qui me donne maintenant ce genre de valeur: 1, 2, 4, 8, 16, 32.....

    Pour des recherches simple avant je faisais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where col1=1 AND col2=1
    Maintenant cela donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where 6 & Attributes<>0
    A ma grande surprise les temps de reponses sont tres tres mauvais dans ma nouvelles facon de faire.

    A votre avis ai je pris la mauvaise solution ? ma requete est elle mauvaise ?

    Merci pour vos avis
    Votre requête est mauvaise parce que dans votre filtre vous faites une opération de calcul sur votre colonne.
    Si vous pouviez vous passer de ce calcul sur la colonne elle-même, il n'y aurait pas trop de problème.
    Mais dans votre cas, pour les opérations que vous envisagez, cela semble (très) difficile et feraient rapidement apparaître des IN (ou des OR).

    Testez la rapidité de cette requête mais voyez aussi comme elle devient pénible à rédiger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where Attributes IN (6, 7, 14, 15, 22, 23, 30, 31...)
    Il vaudrait donc mieux que vous ayez autant de colonne d'1 bit que de valeurs d'1 bit sur lesquels vous faites des filtres.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec recordset, il peux pas lire les type binaire
    Par deeps123 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/04/2007, 16h22
  2. Réponses: 1
    Dernier message: 09/02/2007, 09h50
  3. Comment faire un tail -f sur les logs binaires mysql-bin ?
    Par mediaforest dans le forum Requêtes
    Réponses: 8
    Dernier message: 24/09/2005, 12h34
  4. Problème avec les données binaire
    Par Lachessis dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/08/2005, 17h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo