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

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[mysql] Réorganiser id pour garder continuité ?

n°1242600
cinocks
Posté le 09-11-2005 à 19:59:30  profilanswer
 

Reprise du message précédent :
non. Car plus vite l'ordonnanceur sait ce qu'il doit retourner au final, moins il conservera de données inutiles.


---------------
MZP est de retour
mood
Publicité
Posté le 09-11-2005 à 19:59:30  profilanswer
 

n°1242602
skeye
Posté le 09-11-2005 à 20:05:11  profilanswer
 

(c'était pas une vraie question, en fait.[:joce])


---------------
Can't buy what I want because it's free -
n°1242604
Siron
Posté le 09-11-2005 à 20:16:10  profilanswer
 

Et je dois utilié quoi alors à la place ?
 

Citation :

SELECT COUNT(id_message) AS nb_messages WHERE id_message < $idpostdemande FROM siron_blog


 
Tu m'as proposé ça pour conter les messages, ça fonctionne ?
Parceque je n'ai null part une variable id_message, c'est une variable stantard qui réfère au id ?

n°1242607
cinocks
Posté le 09-11-2005 à 20:20:07  profilanswer
 

skeye a écrit :

(c'était pas une vraie question, en fait.[:joce])


 
je me disais bien :D


---------------
MZP est de retour
n°1242608
cinocks
Posté le 09-11-2005 à 20:21:38  profilanswer
 

Siron a écrit :

Et je dois utilié quoi alors à la place ?
 

Citation :

SELECT COUNT(id_message) AS nb_messages WHERE id_message < $idpostdemande FROM siron_blog


 
Tu m'as proposé ça pour conter les messages, ça fonctionne ?
Parceque je n'ai null part une variable id_message, c'est une variable stantard qui réfère au id ?


 
non serieux. Fais un peu de lecture. id_message c'est le nom du champs correspondant aux id de tes messages. Je ne sais pas comment il s'appelle le tien. Il te suffit de remplacer  :pt1cable:


---------------
MZP est de retour
n°1242648
Siron
Posté le 09-11-2005 à 20:49:44  profilanswer
 

Mais heu, moi je savais pas.
 
Tu aurais du mettre id_dumessagecible, ou un truc comme ça bien lourd, comme ça je vois direct que c'est pas une variable "standard" de mysql.
 
En tout cas merci pour l'aide.


Message édité par Siron le 09-11-2005 à 21:01:39
n°1242851
leflos5
On est ou on est pas :)
Posté le 10-11-2005 à 03:20:21  profilanswer
 

Mais sur ton "sommaire" tu listes tous les messages ou pas? T'as qu'une page en gros? Tu compte n'en avoir qu'une?
Ca simplifie mais de toutes manière quand tu parcours ton tableau de résultats pour afficher le sommaire tu peux très bien compter les messages ;) Donc tu sais combien t'en a avant (n-1) et le nombre total :) Donc je vois pas le soucis ;)
 
Après si tu pagine le "sommaire" faut juster compter l'ensemble et le garder sous le coude quelque part.
 
Après pour la meilleure méthode en fonction du nombre faut tester et chronométrer :D Puis le cache il sert à quelque chose ;) La différence est impressionnante et par défaut bizarrement il est pas activé de mes souvenirs :)

n°1242865
Siron
Posté le 10-11-2005 à 07:42:37  profilanswer
 

Oui j'ai une pagination avec le sommaire.
En fait je recalcule tout l'ensemble à chaque fois, que se soit dans le sommaire ou dans l'affichage des blogs.
 
C'est simple à utiliser le cache ?

n°1243749
leflos5
On est ou on est pas :)
Posté le 11-11-2005 à 05:42:46  profilanswer
 

Siron a écrit :

Oui j'ai une pagination avec le sommaire.
En fait je recalcule tout l'ensemble à chaque fois, que se soit dans le sommaire ou dans l'affichage des blogs.
 
C'est simple à utiliser le cache ?


Quand je dit cahche je parle du cache du SGBD (système de gestion de bd) et ça permet de gagner du temps sur les SELECT si la requête est en cache :)
 
Maintenant les updates faut les faire...
 

n°1243777
Siron
Posté le 11-11-2005 à 10:56:03  profilanswer
 

Mouai, je me renseignerai la dessus.
 
Sinon j'ai désactivé l'incrémentation auto de l'id (pour la faire manuellement), parceque avec la décrémentation après suppression d'un post, l'incrémentation auto n'est plus continue.
 
Je sais c'est une dictature sur l'id que je fais, pas biennnnn.

mood
Publicité
Posté le 11-11-2005 à 10:56:03  profilanswer
 

n°1243798
omega2
Posté le 11-11-2005 à 11:52:10  profilanswer
 

Siron > Personellement, avec mysql, j'utilise un

Code :
  1. SELECT patati FROM matable LIMIT (numerodepage-1)*nbpostparpage,nbpostparpage

et ca marche trés bien même s'il y a des trous, et ca me permet de garder l'autoincrément. (on lui indique combien en sauter et combien on en veut)
 
 
Avec acces, c'est un truc du genre

Code :
  1. SELECT TOP (numerodepage*nbpostparpage) patati FROM matable

Je me rapelle plus si le TOP est juste aprés le SELECT ou juste avant le FROM. En tout cas, ca marche tout aussi bien à par qu'il faut sauter les (numerodepage-1)*nbpostparpage premier résultat retourné vu qu'ils ne font pas parti de la page courante. (on lui indique combien on en veut en comptant ceux qu'on veut sauter)
 
 
Avec postgressql c'est

Code :
  1. SELECT patati FROM matable LIMIT nbpostparpage, OFFSET (numerodepage-1)*nbpostparpage

ce qui revient exactement au même qu'avec mysql (on lui indique combien on en veut et combien en sauter)
 
Dans tous les cas, ca me permet d'utiliser les autoincrément et je touche jamais à la colone qui correspond vu que même s'il y a des trous, c'est invisible au niveau du code.
 
En fait, il ne faut pas réfléchir en (par exemple) "page 1 = posts numéro 1 à 25, page 2 = posts numéro 26 à 50 ..." mais en "page 1 = 25 premiers résultats de la requette, page 2 = 25 premiers résultats situé aprés les 25 premiers, page 3 = 25 premiers résultats aprés les 50 premiers (25 premiers aprés les numerodepage-1 * 25). Et en réfléchissant comme ça, on peut enfin laisser la base de données calculer qui sont les n premiers et en fait, lui laisser carément nous dire dans quel ordre sont les différents messages.
Tout ça pour dire que si t'arrives à réfléchir différement au probléme, alors tu n'auras plus à toucher à l'autoincrément et entre nous, ne pas l'utiliser pour éviter des trous d'id, c'est vraiment chercher des complications par la suite.
Par exemple, avec un indice manuel, comment tu feras quand tu devras censurer un message? Tu seras obligé de le suprimer définitivement ou de le stocker dans une table à part (ca rajoute des étapes) pour le stocker le temps de voir si c'est une censure définitive. Et si tu les suprimes, et qu'un jour tu te plante de message par ce que t'étais creuvé, tu vas faire comment pour recréer la super réponse pondus par un autre vu que t'as plus le texte du message nulle part?
Et si jamais des intervenants de ton forum veulent la possibilité de ne plus voir s'afficher les messages d'un gas qu'ils ont appris à détester, tu vas faire quoi? Tu vas leur répondre "a ben non, ca je peux pas faire par ce que ca fera des trous dans l'affichage!" ?
Quand à l'index que tu calcule à la main, si ton forum devient fréquenté (ce que je te souhaite), tu risques de te retrouver avec deux emssages qui auront le même index vu que tôt ou tard, une personne postera un message pendant que ton script traitera la réponse de la personne précédante (l'index n'étant pas encore incrémenté dans la base de donnée, le suivant essaiera de reprendre le même) ce qui veut complication du code pour gérer ce genre de cas tandisqu'avec un index autoincrémenté, c'est la base de donnée qui s'occupera de se genre de cas et elle elle s'en sortira toujours.
 
En bref, mieux vaut avoir un id dont certain numéro n'existent pas et laisser la base de donnée tout nous fournir comme il faut sur un plateau qu'un systéme à indice manuel nécessitant une grosse gestion d'erreur et qu'on ne poura jamais faire évoluer que difficilement car les évolutions entraineraient beaucoup de complication.

n°1243832
Siron
Posté le 11-11-2005 à 13:28:11  profilanswer
 

Omega2, je prend note de ta méthode, mais je ne crois pas l'utilisé pour se projet, du moins pas pour le moment (en fait j'en ai marre de travailler sur cette pagination).
 
En fait c'est un blog pas un forum, donc ça réduit pas mal les cas qu'il faut envisager, j'ai juste comme fonction sur les posts :
 
-créer
-modifier
-supprimer
 
Mais je garde ton algorithme à porté de main pour peut-être un projet plus ambitieux (ou simplement une futur rationnalisation et restructuration de mon blog).
 
Encore merci pour les aides.


Message édité par Siron le 11-11-2005 à 13:28:48
n°1243842
Beegee
Posté le 11-11-2005 à 13:39:58  profilanswer
 

Attention en utilisant des LIMIT (et même de façon générale), si vous voulez réellement avoir des données triées, il faut absolument faire un ORDER BY (ne jamais se baser sur le fonctionnement interne d'un SGBD qui fait qu'à un moment donné, les données sont renvoyées triées même si on n'a pas mis d'ORDER BY).
 
De toute façon, si le parcours des données fait qu'elles sont triées par défaut, le SGBD ne va rien faire de plus ...


Message édité par Beegee le 11-11-2005 à 13:41:00
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
mysql: questionpb encodage java - Mysql
erreur insertion gros bloc de texte dans mySQLFormat monétaire sous MySQL ?
Erreur MySQL phpmyadmin[VB.NET/Mysql] Utilisation de MysqlConnector
Pb de requete sql avec mysqlpkoi cette commande mysql ne fait pas ce qu'elle est censée faire ?
[MySQL] Automatiser un import/export de data entre 2 bases distantes ?Probleme pour Configurer MySql en Serveur Dedie
Plus de sujets relatifs à : [mysql] Réorganiser id pour garder continuité ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)