Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1634 connectés 

 


Débat n°1




Attention si vous cliquez sur "voir les résultats" vous ne pourrez plus voter

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  20  21  22  23  24  25
Auteur Sujet :

BlaBla@SQL

n°1963257
skeye
Posté le 05-02-2010 à 12:16:32  profilanswer
 

Reprise du message précédent :

Shinuza a écrit :

[noob]
 
C'est quoi inner/outer join?


 
Outer retourne les enregistrements d'un table même s'ils n'ont pas de correspondance dans l'autre.
 
ça permet de faire des jointures externes pour remplacer des sous-requêtes couteuses, en ajoutant des clauses where qui ont l'air stupides :
 

Code :
  1. SELECT count(i.cod_ind)
  2. FROM individu i JOIN ins_adm_etp iae ON (iae.cod_ind = i.cod_ind)
  3.     LEFT OUTER JOIN ins_adm_etp iae2 ON
  4.        (iae2.cod_ind = i.cod_ind
  5.            AND iae2.cod_anu = 2008
  6.            AND iae2.eta_iae = 'E'
  7.            AND iae2.cod_cmp IN (600, 700, 420, 400)
  8.        )
  9. WHERE iae.eta_iae = 'E'
  10. AND iae.cod_cmp IN (600, 700, 420, 400)
  11. AND iae.cod_anu IN (2007, 2006, 2005)
  12. AND iae2.cod_ind IS NULL;


 
au lieu de  
 

Code :
  1. SELECT count(i.cod_ind)
  2. FROM individu i JOIN ins_adm_etp iae ON (iae.cod_ind = i.cod_ind)
  3. WHERE iae.eta_iae = 'E'
  4. AND iae.cod_cmp IN (600, 700, 420, 400)
  5. AND iae.cod_anu IN (2007, 2006, 2005)
  6. AND NOT EXISTS (
  7.    SELECT 1
  8.    FROM individu i2 JOIN ins_adm_etp iae2 ON (iae2.cod_ind = i2.cod_ind)
  9.    WHERE iae2.cod_anu = 2008
  10.    AND iae2.eta_iae = 'E'
  11.    AND iae2.cod_cmp IN (600, 700, 420, 400)
  12.    AND i.cod_ind = i2.cod_ind
  13.    );

Message cité 1 fois
Message édité par skeye le 05-02-2010 à 12:22:47

---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 05-02-2010 à 12:16:32  profilanswer
 

n°1963258
Jubijub
Parce que je le VD bien
Posté le 05-02-2010 à 12:17:49  profilanswer
 

Shinuza a écrit :


[noob]
 
C'est quoi inner/outer join?


http://en.wikipedia.org/wiki/Join_(SQL)


---------------
Jubi Photos : Flickr - 500px
n°1963259
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-02-2010 à 12:19:27  profilanswer
 

masklinn a écrit :


edit: mmm d'après la page d'après ça pourrait donner:

Code :
  1. SELECT foo FROM mytable INNER JOIN (VALUES mes_valeurs) AS tmp (bar) ON mytable.foo = tmp.bar



ouais, je viens de lire aussi à l'instant :jap:
 

lorill a écrit :


 
ouais. Et dans ton code, si on vire des lignes sans réfléchir, ca peut aussi casser des choses.
oh la la.


 

skeye a écrit :


 
Utiliser JOIN c'est juste une question de bonnes pratiques/lisibilité, tes réactions sont toujours excessives.:o


je reviendrais pas dessus... si j'insiste sur ce genre de truc, c'est pas par intégrisme ou prosélytisme, c'est juste que j'ai eu l'occasion de faire les frais d'une suppression de ce genre par un ex-collègue un peu trop zélé qui ne connaissait rien aux jointures (ni au SQL d'ailleurs) et qui a jugé, dans une requête assez conséquente, que supprimer 4 jointures "WHERE" ne ferait pas de mal car il ne comprenait pas leur utilité.
 
résultat : un week end complet passé à réparer ses conneries. la requête comportait une dizaine de tables jointes, chaque table comportant plusieurs centaines de milliers d'enregistrements (plusieurs millions pour certaines). ça a bien évidemment bousillé le serveur, qu'il a fallu redémarrer, avec toutes les contraintes qui vont avec (plusieurs sites connectés dessus, dont certains à l'étranger, pour lesquels il a fallu réveiller les admins à cause du décalage horaire, etc...), mais également le serveur Oracle (le logiciel), que j'ai du réinstaller et reconfigurer de A à Z et enfin la base qui n'a pas libéré quelques milliers de transactions en cours au moment de la coupure, ainsi que des curseurs. et restaurer une sauvegarde était impensable : on était en fin de journée, et on ne pouvait pas se permettre de perdre la journée.
 
bref, continuez de croire que j'exagère jusqu'au jour ou ce genre de mésaventure vous arrivera aussi. personnellement j'ai donné. sans parler des engueulades carabinées du client et de la direction (car oui, dans les SSII, les chefs n'assument pas leurs erreurs de casting et de recrutement...)


---------------
J'ai un string dans l'array (Paris Hilton)
n°1963261
Jubijub
Parce que je le VD bien
Posté le 05-02-2010 à 12:22:39  profilanswer
 

vous testiez pas vos commit sur une base de test avant ?


---------------
Jubi Photos : Flickr - 500px
n°1963262
Shinuza
This is unexecpected
Posté le 05-02-2010 à 12:24:38  profilanswer
 

skeye a écrit :


 
Outer retourne les enregistrements d'un table même s'ils n'ont pas de correspondance dans l'autre.
 
ça permet de faire des jointures externes pour remplacer des sous-requêtes couteuses, en ajoutant des clauses where qui ont l'air stupides :
 

Code :
  1. SELECT count(i.cod_ind)
  2. FROM individu i JOIN ins_adm_etp iae ON (iae.cod_ind = i.cod_ind)
  3.     LEFT OUTER JOIN ins_adm_etp iae2 ON
  4.        (iae2.cod_ind = i.cod_ind
  5.            AND iae2.cod_anu = 2008
  6.            AND iae2.eta_iae = 'E'
  7.            AND iae2.cod_cmp IN (600, 700, 420, 400)
  8.        )
  9. WHERE iae.eta_iae = 'E'
  10. AND iae.cod_cmp IN (600, 700, 420, 400)
  11. AND iae.cod_anu IN (2007, 2006, 2005)
  12. AND iae2.cod_ind IS NULL;


 
au lieu de  
 

Code :
  1. SELECT count(i.cod_ind)
  2. FROM individu i JOIN ins_adm_etp iae ON (iae.cod_ind = i.cod_ind)
  3. WHERE iae.eta_iae = 'E'
  4. AND iae.cod_cmp IN (600, 700, 420, 400)
  5. AND iae.cod_anu IN (2007, 2006, 2005)
  6. AND NOT EXISTS (
  7.    SELECT 1
  8.    FROM individu i2 JOIN ins_adm_etp iae2 ON (iae2.cod_ind = i2.cod_ind)
  9.    WHERE iae2.cod_anu = 2008
  10.    AND iae2.eta_iae = 'E'
  11.    AND iae2.cod_cmp IN (600, 700, 420, 400)
  12.    AND i.cod_ind = i2.cod_ind
  13.    );


:jap:
 

J'avais en diagonale notamment la partie ou ils parlent de "implicit join notation" qui semble être mon cas.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1963266
masklinn
í dag viðrar vel til loftárása
Posté le 05-02-2010 à 12:25:29  profilanswer
 

Jubijub a écrit :

vous testiez pas vos commit sur une base de test avant ?


?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1963268
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-02-2010 à 12:26:23  profilanswer
 

Jubijub a écrit :

vous testiez pas vos commit sur une base de test avant ?


si bien sur, mais là encore, ex-collègueG avait jugé que ça serait mieux, étant donné la modif "mineure" qu'il faisait, de tester directement sur la prod du client, lui faisant ainsi économiser 1 heure de temps de 2 consultants, persuadé qu'il était que sa modif se contenterait de virer des WHERE inutiles sans altérer les données... [:kiki]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1963269
skeye
Posté le 05-02-2010 à 12:27:15  profilanswer
 

Harkonnen a écrit :


si bien sur, mais là encore, ex-collègueG avait jugé que ça serait mieux, étant donné la modif "mineure" qu'il faisait, de tester directement sur la prod du client, lui faisant ainsi économiser 1 heure de temps de 2 consultants, persuadé qu'il était que sa modif se contenterait de virer des WHERE inutiles sans altérer les données... [:kiki]


faute professionnelle, on vire le connard et on enchaine.:o


---------------
Can't buy what I want because it's free -
n°1963270
Shinuza
This is unexecpected
Posté le 05-02-2010 à 12:27:46  profilanswer
 

Bon je crois que ma requête correspond pas à ce que tu suggères, les résultats sont pas les même et c'est 10 fois plus long :/

 

Edit : My bad j'ai écris une connerie, les résultats sont similaires et c'est plus rapide :o

Message cité 1 fois
Message édité par Shinuza le 05-02-2010 à 12:33:54

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1963271
skeye
Posté le 05-02-2010 à 12:28:46  profilanswer
 

Shinuza a écrit :

Bon je crois que ma requête correspond pas à ce que tu suggères, les résultats sont pas les même et c'est 10 fois plus long :/


Tu me parles à moi?[:petrus dei]
Si oui, j'ai raté un truc - genre la requête d'origine et ce que tu veux en faire.[:joce]


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 05-02-2010 à 12:28:46  profilanswer
 

n°1963272
Shinuza
This is unexecpected
Posté le 05-02-2010 à 12:31:03  profilanswer
 

skeye a écrit :


Tu me parles à moi?[:petrus dei]
Si oui, j'ai raté un truc - genre la requête d'origine et ce que tu veux en faire.[:joce]

Nan je m'adressais a Harko, désolé


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1963274
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-02-2010 à 12:33:39  profilanswer
 

skeye a écrit :


faute professionnelle, on vire le connard et on enchaine.:o


le connard a été viré par la suite (il a fallu qu'il fasse 2 autres conneries avant quand même...) , les heures passées à réparer ses conneries n'ont bien sur pas été facturées et j'attends toujours que cette boite me rembourse frais de déplacement dus aux innombrables aller-retour que j'ai du faire chez ce client (je me suis assis dessus depuis longtemps).
bref, remplacer un WHERE par un JOIN prend 2 secondes et peut sauver des vies. je vois pas pourquoi s'obstiner personnellement.


---------------
J'ai un string dans l'array (Paris Hilton)
n°1963276
skeye
Posté le 05-02-2010 à 12:35:21  profilanswer
 

Harkonnen a écrit :

bref, remplacer un WHERE par un JOIN prend 2 secondes et peut sauver des vies. je vois pas pourquoi s'obstiner personnellement.


Ici j'ai des devs qui ont appris sql sur oracle 7 et n'ont jamais vu la syntaxe JOIN...[:skeye]
Je suis tout à fait pour l'utilisation des join, mais pour ces collègues c'est compliqué à relire, c'est tout...je vais pas les forcer à changer de syntaxe alors qu'ils savent très bien ce qu'ils font avec des where.:o


---------------
Can't buy what I want because it's free -
n°1963277
Shinuza
This is unexecpected
Posté le 05-02-2010 à 12:39:23  profilanswer
 

[noob]
 
Mais donc, JOIN sans CLAUSE ( OUTER/INNER ) est INNER par défaut si je comprends bien?


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1963281
drasche
Posté le 05-02-2010 à 12:50:06  profilanswer
 

skeye a écrit :

Ici j'ai des devs qui ont appris sql sur oracle 7 et n'ont jamais vu la syntaxe JOIN...[:skeye]
Je suis tout à fait pour l'utilisation des join, mais pour ces collègues c'est compliqué à relire, c'est tout...je vais pas les forcer à changer de syntaxe alors qu'ils savent très bien ce qu'ils font avec des where.:o


Ils sont pas un peu noobs pour considérer que c'est plus compliqué à lire alors que ça divise limite ta construction de jointures en deux lieux différents de ta requête?
 
Perso je le cache pas, je suis à fond partisan du JOIN (mais pas encore fachisant sinon j'aurais déjà réécrit quelques requêtes ici) parce que je trouve justement ça plus simple à lire, à écrire, et à maintenir. Je trouve pas d'avantage à l'autre syntaxe. Faudrait les envoyer en formation ces collègues :o
 
Pour l'OUTER JOIN, merci au passage, j'avais jamais bien compris et pour le coup, j'avoue que j'écris encore tout avec le Machin NOT EXIST (SELECT 1 blablabla) :jap:


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1963283
drasche
Posté le 05-02-2010 à 12:50:30  profilanswer
 

Shinuza a écrit :

[noob]
 
Mais donc, JOIN sans CLAUSE ( OUTER/INNER ) est INNER par défaut si je comprends bien?


Oui, c'est INNER JOIN par défaut.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1963286
skeye
Posté le 05-02-2010 à 12:59:12  profilanswer
 

drasche a écrit :


Ils sont pas un peu noobs pour considérer que c'est plus compliqué à lire alors que ça divise limite ta construction de jointures en deux lieux différents de ta requête?


Question d'habitude.[:skeye]
...puis j'ai rapidement tendance à faire le genre d'outer join posté plus haut, et là c'est forcément moins lisible - sur des jointures à coups de where tu seras obligé de les écrire avec une sous-jointure, et c'est plus lisible, pour le coup.:o


---------------
Can't buy what I want because it's free -
n°1963288
skeye
Posté le 05-02-2010 à 13:00:12  profilanswer
 

...et je parle même pas de leur montrer la syntaxe de Zend_Db_Select [:everything4free]


---------------
Can't buy what I want because it's free -
n°1963308
Jubijub
Parce que je le VD bien
Posté le 05-02-2010 à 13:41:05  profilanswer
 


??
 

Harkonnen a écrit :


si bien sur, mais là encore, ex-collègueG avait jugé que ça serait mieux, étant donné la modif "mineure" qu'il faisait, de tester directement sur la prod du client, lui faisant ainsi économiser 1 heure de temps de 2 consultants, persuadé qu'il était que sa modif se contenterait de virer des WHERE inutiles sans altérer les données... [:kiki]


oui, là, forcément...
 
perso vu la proba que étant non DBA :  
- je fasse une requete foireuse qui engendre un produit cartésien qui me plie la base (ou mette un vieux poc niveau perf),  
- je perde des données en mettant mal mes clauses lors d'un delete ou d'un update
 
ça me viendrait pas à l'idée de jouer un script en prod sans l'avoir testé sur une base de test, puis sans l'avoir testé sur la base de prod avant avec des selects / sans commit histoire d'etre bien sur...
 
il était joueur ton collègue :/

Message cité 1 fois
Message édité par Jubijub le 05-02-2010 à 13:45:30

---------------
Jubi Photos : Flickr - 500px
n°1963311
FlorentG
Unité de Masse
Posté le 05-02-2010 à 13:43:29  profilanswer
 

Jubijub a écrit :

vous testiez pas vos commit sur une base de test avant ?


On écrit du code de qualité qui fonctionne tout de suite en prod, pas besoin de base de test de n00b [:thalis]

n°1963322
masklinn
í dag viðrar vel til loftárása
Posté le 05-02-2010 à 13:49:22  profilanswer
 

Jubijub a écrit :

ça me viendrait pas à l'idée de jouer un script en prod sans l'avoir testé sur une base de test, puis sans l'avoir testé sur la base de prod avant avec des selects / sans commit histoire d'etre bien sur...


idéalement t'as un site d'intégration dont la base est une copie conforme (clone journalier par exemple) de la base de prod, données comprises :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1963325
skeye
Posté le 05-02-2010 à 13:50:36  profilanswer
 

masklinn a écrit :


idéalement t'as un site d'intégration dont la base est une copie conforme (clone journalier par exemple) de la base de prod, données comprises :o


C'est pour les riches ça.[:petrus75]
Ici on dev sur la base de tests, copie conforme hebdo de la prod.


---------------
Can't buy what I want because it's free -
n°1963328
masklinn
í dag viðrar vel til loftárása
Posté le 05-02-2010 à 13:53:20  profilanswer
 

skeye a écrit :


C'est pour les riches ça.[:petrus75]
Ici on dev sur la base de tests, copie conforme hebdo de la prod.


Bah c'est bien aussi, mais avec les grosses bases si chaque dev a sa machine, sauf si toutes les machines de dev sont des monstres c'est pas faisable :o
 
Parce que bon des DBs de 50Go sur le pauvre poste de dev, ça peut douiller, surtout si il faut la régénérer fréquemment parce qu'il y a des tests un peu dangereux qui sont faits :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1963330
skeye
Posté le 05-02-2010 à 13:55:20  profilanswer
 

masklinn a écrit :


Bah c'est bien aussi, mais avec les grosses bases si chaque dev a sa machine, sauf si toutes les machines de dev sont des monstres c'est pas faisable :o
 
Parce que bon des DBs de 50Go sur le pauvre poste de dev, ça peut douiller, surtout si il faut la régénérer fréquemment parce qu'il y a des tests un peu dangereux qui sont faits :o


 
ah oui mais non, les bases de test sont sur les mêmes serveurs que celles de prod, faut pas déconner.[:joce]
Non parce-que déployer un oracle sur AIX par dev ça va pas le faire non plus, stuveux.[:petrus75]


---------------
Can't buy what I want because it's free -
n°1963335
masklinn
í dag viðrar vel til loftárása
Posté le 05-02-2010 à 14:03:21  profilanswer
 

skeye a écrit :

ah oui mais non, les bases de test sont sur les mêmes serveurs que celles de prod, faut pas déconner.[:joce]
Non parce-que déployer un oracle sur AIX par dev ça va pas le faire non plus, stuveux.[:petrus75]


Ah ok, donc pendant tes tests tu peux flinguer la base de ton collègue? [:glenda]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1963341
masklinn
í dag viðrar vel til loftárása
Posté le 05-02-2010 à 14:08:06  profilanswer
 

http://troels.arvin.dk/db/rdbms/
 
Ça sert à rien, la norme SQL, en fait [:sadnoir]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1963343
masklinn
í dag viðrar vel til loftárása
Posté le 05-02-2010 à 14:09:01  profilanswer
 

Also, PreparedStatementFail [:sadnoir]
 

Code :
  1. cr.execute('select distinct child_id from some_table_rel where parent_id in ('+','.join(map(str, ids))+')')


 [:prozac]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1963344
drasche
Posté le 05-02-2010 à 14:11:14  profilanswer
 

skeye a écrit :

ah oui mais non, les bases de test sont sur les mêmes serveurs que celles de prod, faut pas déconner.[:joce]
Non parce-que déployer un oracle sur AIX par dev ça va pas le faire non plus, stuveux.[:petrus75]


Une base de dev, une base de test, une base de prod. Chaque base sur des machines différentes :o
 
Tiens j'ai 70GB de base en prod [:dawak] (je pensais qu'on était à 40GB, j'ai dû louper un truc)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1963349
skeye
Posté le 05-02-2010 à 14:20:08  profilanswer
 

masklinn a écrit :


Ah ok, donc pendant tes tests tu peux flinguer la base de ton collègue? [:glenda]


Si je suis un gros boulet, oui. Mais ça n'est jamais arrivé, s'il y a bien un truc où les mecs savent ce qu'ils font ici c'est bien les bases de données.[:joce]


---------------
Can't buy what I want because it's free -
n°1963350
skeye
Posté le 05-02-2010 à 14:20:55  profilanswer
 

drasche a écrit :


Une base de dev, une base de test, une base de prod. Chaque base sur des machines différentes :o

 

Tiens j'ai 70GB de base en prod [:dawak] (je pensais qu'on était à 40GB, j'ai dû louper un truc)

 

6 prod, 6 test, 6 formation, le tout sur 3 serveurs.[:concours de bite]


Message édité par skeye le 05-02-2010 à 14:21:12

---------------
Can't buy what I want because it's free -
n°1963551
theredled
● REC
Posté le 06-02-2010 à 00:51:04  profilanswer
 

[:asleepbuddah]


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1963552
theredled
● REC
Posté le 06-02-2010 à 00:53:48  profilanswer
 

seabee a écrit :


Fais un index multi colonne (show_id, airdate) qui te servira pour ta requête et toutes les jointures sur les show (left-most machin)
Et un autre sur airdate pour les cas ou tu auras à trier par airdate sans jointure.
ça devrait poutrer sa mère.


Ca suppose qu'il ait jamais deux mêmes airdate pour un même show_id ça, nan ?

Message cité 1 fois
Message édité par theredled le 06-02-2010 à 00:54:59

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1963562
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-02-2010 à 08:34:21  profilanswer
 

skeye a écrit :


Ici j'ai des devs qui ont appris sql sur oracle 7 et n'ont jamais vu la syntaxe JOIN...[:skeye]
Je suis tout à fait pour l'utilisation des join, mais pour ces collègues c'est compliqué à relire, c'est tout...je vais pas les forcer à changer de syntaxe alors qu'ils savent très bien ce qu'ils font avec des where.:o


c'est justement pour ça qu'il faut utiliser JOIN. plus c'est compliqué à relire, plus le doute germe dans l'esprit de celui qui ne connait pas et qui serait tenté de faire le même genre de modif.
imaginons que je débute le SQL. j'arrive sur un chantier, on me demande de retoucher une requête. le fait de voir des JOIN me fera réfléchir à 2 fois (voir demander confirmation) avant d'y toucher. alors que le WHERE a une connotation "je restreint le recordset retourné, et si je le supprime, je ne risque rien sauf au pire renvoyer plus de données que nécessaires".
 
edit: et j'ai oublié de préciser que le serveur Oracle que ex-collègueG a bousillé tournait sous Linux. et ça, ben rien que pour la chierie satanique que représente l'install d'Oracle sous Linux, ça mérite de virer les Where :fou:

Message cité 2 fois
Message édité par Harkonnen le 06-02-2010 à 08:38:34

---------------
J'ai un string dans l'array (Paris Hilton)
n°1963570
skeye
Posté le 06-02-2010 à 09:50:00  profilanswer
 

Harkonnen a écrit :


edit: et j'ai oublié de préciser que le serveur Oracle que ex-collègueG a bousillé tournait sous Linux. et ça, ben rien que pour la chierie satanique que représente l'install d'Oracle sous Linux, ça mérite de virer les Where :fou:


 
petite nature, linux c'est pas de l'aix 5.2.[:petrus75]


---------------
Can't buy what I want because it's free -
n°1963617
mareek
Et de 3 \o/
Posté le 06-02-2010 à 16:31:19  profilanswer
 

drasche a écrit :

Quel est l'âne qui a choisi SELECT * qu'on le pende par les couilles? :o


ratibus :o

FlorentG a écrit :

Arrêtez de foutre des NULL partout :o
 
Mettez une date à zéro par exemple, c'est moins relou.


C'est vrai ça, pourquoi utiliser le null pour ce pour quoi il a été conçu [:petrus75]

Shinuza a écrit :

Cross post aussi
 
Deux tables :
 
Hors c'est super lent, je vais retenter un explain mais je sais pas lire le résultat :o
Mais au pif si je dois indexer il faut que je le fasse sur quel column et pourquoi?
 
:jap:


dans ce cas, la règle de base c'est de rajouter des index sur les champs utilisés dans le where d'une requête lente. Si ça n'est pas assez efficace, tu demande a un dba ou a un expert de ce topic.

Harkonnen a écrit :

je reviendrais pas dessus... si j'insiste sur ce genre de truc, c'est pas par intégrisme ou prosélytisme, c'est juste que j'ai eu l'occasion de faire les frais d'une suppression de ce genre par un ex-collègue un peu trop zélé qui ne connaissait rien aux jointures (ni au SQL d'ailleurs) et qui a jugé, dans une requête assez conséquente, que supprimer 4 jointures "WHERE" ne ferait pas de mal car il ne comprenait pas leur utilité.
 
résultat : un week end complet passé à réparer ses conneries. la requête comportait une dizaine de tables jointes, chaque table comportant plusieurs centaines de milliers d'enregistrements (plusieurs millions pour certaines). ça a bien évidemment bousillé le serveur, qu'il a fallu redémarrer, avec toutes les contraintes qui vont avec (plusieurs sites connectés dessus, dont certains à l'étranger, pour lesquels il a fallu réveiller les admins à cause du décalage horaire, etc...), mais également le serveur Oracle (le logiciel), que j'ai du réinstaller et reconfigurer de A à Z et enfin la base qui n'a pas libéré quelques milliers de transactions en cours au moment de la coupure, ainsi que des curseurs. et restaurer une sauvegarde était impensable : on était en fin de journée, et on ne pouvait pas se permettre de perdre la journée.
 
bref, continuez de croire que j'exagère jusqu'au jour ou ce genre de mésaventure vous arrivera aussi. personnellement j'ai donné. sans parler des engueulades carabinées du client et de la direction (car oui, dans les SSII, les chefs n'assument pas leurs erreurs de casting et de recrutement...)


Tu te bases sur un exemple qui implique un collègue particulièrement incompétent, difficile d'en tirer une règle générale a partir de ce point :o
 
AMHA c'est plus une question de style, les un préfèrent les join, les autres préfèrent faire ça dans le where, pas besoin de faire une flame war sur ce sujet.

masklinn a écrit :

http://troels.arvin.dk/db/rdbms/
 
Ça sert à rien, la norme SQL, en fait [:sadnoir]


Quand tu as des gens comme Oracle et MySQL, c'est effectivement pas très utile :/

Harkonnen a écrit :

c'est justement pour ça qu'il faut utiliser JOIN. plus c'est compliqué à relire, plus le doute germe dans l'esprit de celui qui ne connait pas et qui serait tenté de faire le même genre de modif.


Dans ma première boite, certains trucs étaient volontairement compliqués pour forcer les gens a réfléchir (en théorie). Dans la pratique, les seuls effets que ça avait étaient de ralentir ceux qui savaient ce qu'ils faisaient et d'embrouiller les autres qui faisaient n'importe quoi.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°1963618
seabee
Posté le 06-02-2010 à 16:32:40  profilanswer
 

theredled a écrit :


Ca suppose qu'il ait jamais deux mêmes airdate pour un même show_id ça, nan ?


Les indexes mysql classique sont des B-Tree tous cons. (arbre de recherche balancé avec la valeur médianne de tout sous-arbre en haut du sous-arbre.
Un index multi-colonne c'est simplement un B-Tree dont les clés sont une concaténation des deux valeurs, genre show_id:airdate
C'est pour ça que l'ordre est important. Mais ça n'ajoute pas de contraintes niveau cardinalité.

n°1963960
E-Nyar
I ain't no nice guy after all
Posté le 08-02-2010 à 16:42:05  profilanswer
 

insert flag into topic :o


---------------
Don't fuck me, I'm anonymous.
n°1964100
BenO
Profil: Chercheur
Posté le 09-02-2010 à 07:52:49  profilanswer
 

prems :o


---------------
Python Python Python
n°1964101
drasche
Posté le 09-02-2010 à 08:17:14  profilanswer
 


mauvais topic :o


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1964102
BenO
Profil: Chercheur
Posté le 09-02-2010 à 08:21:28  profilanswer
 

meuh non.


---------------
Python Python Python
n°1964697
skeye
Posté le 10-02-2010 à 17:34:52  profilanswer
 

Quelqu'un pourrait m'expliquer pourquoi MyWTFSql est sensible à la casse dans les noms de tables et de colonnes?[:sisicaivrai]


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  20  21  22  23  24  25

Aller à :
Ajouter une réponse
 

Sujets relatifs
Requete SQL de selection complexe[SQL SERVER] Ajout d'une colonne en PS...mais inutilisable
[ODBC] DSN pour se connecter à une base SQL[PDO/SQL] Aide selection et classement (JOIN ??)
Problème conditions requete SQLSQL/PHP BDD de réservation de chambres
Jointure 'LIKE' SQL => BOtable SQL Ajouter une colonne au lieu de creer une nouvelle table
Requête SQL complexe 
Plus de sujets relatifs à : BlaBla@SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR