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

 



 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7  8
Auteur Sujet :

Un ALTER sur beaucoup d'enregistrements ...

n°481504
x-httpd-ph​p
Posté le 08-08-2003 à 20:43:34  profilanswer
 

Reprise du message précédent :

Taz a écrit :

ben évidemment, ct un reponse alac
 
t'as pas une putain d'option: reconstruire la base de données?

Bah écoute, moi j'ai eu un problème similaire, j'ai viré le maximum de WHERE dans ma requête, et ça a grandement amélioré les choses, même si les champs étaient indexés [:spamafote]

mood
Publicité
Posté le 08-08-2003 à 20:43:34  profilanswer
 

n°481505
MagicBuzz
Posté le 08-08-2003 à 20:43:37  profilanswer
 

Max Evans a écrit :

Je ne pense pas qu'il les selectionne dans l'ordre vu qu'il doit rescanner la table pour la trier :/


Non, quand tu tapes dans un index, y'a pas le moindre accès à la table, c'est justement l'intérêt des indexes.

n°481506
Taz
bisounours-codeur
Posté le 08-08-2003 à 20:43:38  profilanswer
 

mais je sais bien. mais y a une diff entre trouver les éléments et les retourner dans un ordre.

n°481508
Max Evans
Posté le 08-08-2003 à 20:44:05  profilanswer
 

PS : TOut vient du ORDER BY, kand je l'enleve, je fais du 0.06s :/

n°481509
Max Evans
Posté le 08-08-2003 à 20:44:29  profilanswer
 

MagicBuzz a écrit :


Non, quand tu tapes dans un index, y'a pas le moindre accès à la table, c'est justement l'intérêt des indexes.


 
ha oki autant pour moi, c'est parce que les index sont des fichiers ?

n°481510
Taz
bisounours-codeur
Posté le 08-08-2003 à 20:44:49  profilanswer
 

Max Evans a écrit :

PS : TOut vient du ORDER BY, kand je l'enleve, je fais du 0.06s :/

c'est quoi le type de ton champ?

n°481511
MagicBuzz
Posté le 08-08-2003 à 20:45:17  profilanswer
 

Taz a écrit :

ben évidemment, ct un reponse alac
 
t'as pas une putain d'option: reconstruire la base de données?


Sous Oracle, c'est :
 
analyze [table_name] compute statistics
 
Essaie ça, si ça marche avec MySQL : ça recalcule une série de choses, et ça populate les indexes et les optimise. Sous Oracle, ça permet de diviser les temps de recherche pas 100 quand ton index fait la tronche.

n°481512
Max Evans
Posté le 08-08-2003 à 20:45:43  profilanswer
 

DATETIME :)
 
Mais j'ai essayé sur un autre champ indexé de type MEDIUMINT, et ... beh merde, la je fais du 0.3s, c'est mieux ^^
 
Mais bon, c tjs assez lent je trouve :/

n°481513
MagicBuzz
Posté le 08-08-2003 à 20:46:36  profilanswer
 

x-httpd-php a écrit :

Bah écoute, moi j'ai eu un problème similaire, j'ai viré le maximum de WHERE dans ma requête, et ça a grandement amélioré les choses, même si les champs étaient indexés [:spamafote]


C'est normal... Index ou pas, une condition demande des lectures supplémentaires...
 
PS: vous me faites peur : MySQL gère bien les index qui portent sur plusieurs champs à la fois non :??: (parceque là part contre, tu perds en perf dès que tu omets un des champs...)

n°481514
Max Evans
Posté le 08-08-2003 à 20:46:49  profilanswer
 

MagicBuzz a écrit :


Sous Oracle, c'est :
 
analyze [table_name] compute statistics
 
Essaie ça, si ça marche avec MySQL : ça recalcule une série de choses, et ça populate les indexes et les optimise. Sous Oracle, ça permet de diviser les temps de recherche pas 100 quand ton index fait la tronche.


 
Nop, ca ne marche pas :(

mood
Publicité
Posté le 08-08-2003 à 20:46:49  profilanswer
 

n°481515
Taz
bisounours-codeur
Posté le 08-08-2003 à 20:46:56  profilanswer
 

moi je pense que y a un prob au niveau physique ou que tu nous pas tout, parce que niveau requete et de ce qu'on sait, ça devrait marcher comme l'éclair

n°481516
Max Evans
Posté le 08-08-2003 à 20:47:11  profilanswer
 

MagicBuzz a écrit :


C'est normal... Index ou pas, une condition demande des lectures supplémentaires...
 
PS: vous me faites peur : MySQL gère bien les index qui portent sur plusieurs champs à la fois non :??: (parceque là part contre, tu perds en perf dès que tu omets un des champs...)


 
Un index sur plusieurs champs est tout a fait possible oui ;)

n°481517
x-httpd-ph​p
Posté le 08-08-2003 à 20:47:41  profilanswer
 

MagicBuzz a écrit :


C'est normal... Index ou pas, une condition demande des lectures supplémentaires...
 
PS: vous me faites peur : MySQL gère bien les index qui portent sur plusieurs champs à la fois non :??: (parceque là part contre, tu perds en perf dès que tu omets un des champs...)

Je sais bien ça, c'était juste pour Taz qui disait que ma réponse était débile.
Et oui mySQL gère ce genre d'indexes :)

n°481518
MagicBuzz
Posté le 08-08-2003 à 20:47:46  profilanswer
 

Taz a écrit :

mais je sais bien. mais y a une diff entre trouver les éléments et les retourner dans un ordre.


Bah si dans l'index ils sont déjà ordonnés et que ça correspond à l'order by, logiquement, l'optimiseur de requête va zapper l'ordonnage des lignes, puisque ça ressort déjà trié à partir de l'index...

n°481519
Max Evans
Posté le 08-08-2003 à 20:48:12  profilanswer
 

Taz a écrit :

moi je pense que y a un prob au niveau physique ou que tu nous pas tout, parce que niveau requete et de ce qu'on sait, ça devrait marcher comme l'éclair


 
Pourtant, j'ai essayer d'optimiser un maximum :/
Ma table est statique (Char), et je vous ai tout dit :(
 
PS : J'avais fait un test sur un Celeron 600 Mhz, 64 Mo de RAM, ca ramait encore plus, donc tjs aussi lent :/

n°481520
x-httpd-ph​p
Posté le 08-08-2003 à 20:48:29  profilanswer
 

Max Evans a écrit :


 
Un index sur plusieurs champs est tout a fait possible oui ;)

Tu l'as sûrement déjà dit, mais le champ du ORDER BY est bien indexé ?

n°481521
Max Evans
Posté le 08-08-2003 à 20:48:47  profilanswer
 

MagicBuzz a écrit :


Bah si dans l'index ils sont déjà ordonnés et que ça correspond à l'order by, logiquement, l'optimiseur de requête va zapper l'ordonnage des lignes, puisque ça ressort déjà trié à partir de l'index...


 
C'est bien ce que je voulais faire avec mon ALTER !
Ordonner automatiquement mes enregistrements :(

n°481523
Max Evans
Posté le 08-08-2003 à 20:49:34  profilanswer
 

Bougez pas, je vous fait un petit explain ;)
 
 
EDIT :
 
http://www.smallville-fr.com/divers/bizzare.jpg
 
La, j'ai fais le ORDER BY sur le champ de type MEDIUMINT :)


Message édité par Max Evans le 08-08-2003 à 20:53:48
n°481524
Max Evans
Posté le 08-08-2003 à 20:54:59  profilanswer
 

Ya pu personne ? :D
 
x-httpd-php  > Yes, bien indexé :)

n°481525
x-httpd-ph​p
Posté le 08-08-2003 à 20:55:07  profilanswer
 

Je viens de faire une requête similaire sur une table de 170 000 enregistrements, et j'ai même pas 20 ms de temps de génération :/


Message édité par x-httpd-php le 08-08-2003 à 20:55:24
n°481526
Taz
bisounours-codeur
Posté le 08-08-2003 à 20:55:30  profilanswer
 
n°481527
Max Evans
Posté le 08-08-2003 à 20:55:44  profilanswer
 

:??:
 
En selectionnant les 10 derniers enregistrements ?
 
Tu peux me montrer ton EXPLAIN ? :)

n°481528
x-httpd-ph​p
Posté le 08-08-2003 à 20:55:55  profilanswer
 

Max Evans a écrit :

Bougez pas, je vous fait un petit explain ;)
 
 
EDIT :
 
http://www.smallville-fr.com/divers/bizzare.jpg
 
La, j'ai fais le ORDER BY sur le champ de type MEDIUMINT :)

T'es sûr que trash est bien indexé :??:
Quoique... [:meganne]

n°481529
Max Evans
Posté le 08-08-2003 à 20:56:17  profilanswer
 
n°481530
Max Evans
Posté le 08-08-2003 à 20:56:31  profilanswer
 

x-httpd-php a écrit :

T'es sûr que trash est bien indexé :??:
Quoique... [:meganne]


 
Oui lol
 
Meme en l'enlevant, les temps ne changent pas ;)
 
EDIT : En enlevant le WHERE, pas l'index :D


Message édité par Max Evans le 08-08-2003 à 20:56:50
n°481531
Je@nb
In ze cloud
Posté le 08-08-2003 à 20:56:59  profilanswer
 

Nono, j'ai trouvé  :sol:  :sol:  
 
C parce que t sous windows  :whistle:

n°481533
Max Evans
Posté le 08-08-2003 à 20:57:33  profilanswer
 

Je@nb a écrit :

Nono, j'ai trouvé  :sol:  :sol:  
 
C parce que t sous windows  :whistle:  


 
Salope :D
 
Oué c'est vrai que je suis sous Win2000 Pro, mais bon, de la a avoir des temps 100x superieur a la moyenne :D

n°481534
x-httpd-ph​p
Posté le 08-08-2003 à 20:58:13  profilanswer
 

Max Evans a écrit :

:??:
 
En selectionnant les 10 derniers enregistrements ?
 
Tu peux me montrer ton EXPLAIN ? :)

Je sélectionne les 50 derniers...
Attend j'essaye de te faire ça :)

n°481535
Max Evans
Posté le 08-08-2003 à 20:58:21  profilanswer
 

x-httpd-php a écrit :

Je sélectionne les 50 derniers...
Attend j'essaye de te faire ça :)


 
Oki thx ;)

n°481536
x-httpd-ph​p
Posté le 08-08-2003 à 21:00:08  profilanswer
 

Tu veux vraiment que les 10 derniers, ou alors 50 enregistrements vers la fin de ma table ça te va aussi ? :D

n°481537
Max Evans
Posté le 08-08-2003 à 21:00:32  profilanswer
 

50 ou meme 100, mais les dernier surtout, c'est pareil ;)

n°481538
Limit
Posté le 08-08-2003 à 21:01:28  profilanswer
 

max > quand tu sélectionnes les 50 premiers, tu as quel temps ?

n°481539
Max Evans
Posté le 08-08-2003 à 21:02:57  profilanswer
 

Limit a écrit :

max > quand tu sélectionnes les 50 premiers, tu as quel temps ?


 
0.003s :/

n°481540
MagicBuzz
Posté le 08-08-2003 à 21:04:29  profilanswer
 

Max Evans a écrit :


 
Oui lol
 
Meme en l'enlevant, les temps ne changent pas ;)
 
EDIT : En enlevant le WHERE, pas l'index :D


Et il est bien dans le même index que dernier_date hein ?
 
PS: et faut pas que l'index porte sur un autre champ surtout !

n°481541
Max Evans
Posté le 08-08-2003 à 21:04:57  profilanswer
 

MagicBuzz a écrit :


Et il est bien dans le même index que dernier_date hein ?
 
PS: et faut pas que l'index porte sur un autre champ surtout !


 
HA !
 
Si si, la il porte sur un autre champ !!!!
Je vais essayer ta technique ;)

n°481542
x-httpd-ph​p
Posté le 08-08-2003 à 21:05:17  profilanswer
 

Code :
  1. mysql> explain SELECT * FROM forum_topics7  WHERE trash='0' ORDER BY postit DESC,date_der_rep DESC LIMIT 149950,50;
  2. +-------+-------+---------------+--------+---------+------+--------+-------------+
  3. | table | type  | possible_keys | key    | key_len | ref  | rows   | Extra       |
  4. +-------+-------+---------------+--------+---------+------+--------+-------------+
  5. | a     | index | NULL          | postit |       5 | NULL | 166147 | Using where |
  6. +-------+-------+---------------+--------+---------+------+--------+-------------+
  7. 1 row in set (0.00 sec)

 
[:spamafote]

n°481543
Max Evans
Posté le 08-08-2003 à 21:05:35  profilanswer
 

MagicBuzz a écrit :


Et il est bien dans le même index que dernier_date hein ?
 
PS: et faut pas que l'index porte sur un autre champ surtout !


 
Heu, atta, apres reflexion tu parles de quel champ la ? :??:

n°481544
Max Evans
Posté le 08-08-2003 à 21:06:22  profilanswer
 

x-httpd-php a écrit :

Code :
  1. mysql> explain SELECT * FROM forum_topics7  WHERE trash='0' ORDER BY postit DESC,date_der_rep DESC LIMIT 149950,50;
  2. +-------+-------+---------------+--------+---------+------+--------+-------------+
  3. | table | type  | possible_keys | key    | key_len | ref  | rows   | Extra       |
  4. +-------+-------+---------------+--------+---------+------+--------+-------------+
  5. | a     | index | NULL          | postit |       5 | NULL | 166147 | Using where |
  6. +-------+-------+---------------+--------+---------+------+--------+-------------+
  7. 1 row in set (0.00 sec)

 
[:spamafote]


 
J'hallucine  :ouch:  


Message édité par Max Evans le 08-08-2003 à 21:06:40
n°481545
MagicBuzz
Posté le 08-08-2003 à 21:07:09  profilanswer
 

ton index doit porter sur trash et dernier_date
 
point barre, pas un de plus, pas un de moins. sinon il est purement inutile (si y'en a moins, tu vas te tapper des lectures dans l'index, et si y'en a plus, tu vas te taper un range scan dans l'index, ce qui n'est pas mieu)

n°481546
Max Evans
Posté le 08-08-2003 à 21:07:22  profilanswer
 

PS : Tu peux enlever le 2° champ dans ton ORDER pliz ? :)

n°481547
x-httpd-ph​p
Posté le 08-08-2003 à 21:07:33  profilanswer
 

Max Evans a écrit :


 
J'hallucine  :ouch:  
 

C'est peut-être dû au bi-Xeon 3 GHz :??: :D

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8

Aller à :
Ajouter une réponse
 

Sujets relatifs
Comment avoir le nombre total d'enregistrements dans une table MySQL ?[Access] Comment évolue l'espace disque selon les enregistrements !
[MYSQL] Déplacer des enregistrements d'une table à une autrerequète sql en php modifiant plusieurs enregistrements
Supprimer TOUS les enregistrements d'une table ParadoxEncore un soucis VBA !!! Affichage des enregistrements
SQL Server : récupérer les enregistrements n à m, problème[oracle] récuérer les enregistrements n à m résultants d'une requête
compter simplement les enregistrements d'une table SQL..MySql : Alter Table ....ADD
Plus de sujets relatifs à : Un ALTER sur beaucoup d'enregistrements ...


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR