TutorielsVous débutez ? C'est ici qu'on commence !
Mon compte
Recherche
Livre d'or
PublicitéVous devez être inscrit pour pouvoir poster des messages
Le problème de ce sujet a été résolu
| Page : 1 | |
| Auteur | Message |
|---|---|
| 1 visiteur sur ce sujet (1 anonyme) | |
| Page : 1 | |
IgiX
|
# Posté le 13/10/2008 à 21:56:14 |
Qui tente rien, n'a rien!![]() Groupe : Membres |
Bonsoir!
Voilà mon p'tit problème et son contexte. Je suis en train de créer un forum pour mon site, et j'aimerai le rendre le plus lite possible et là je bloque. Je voudrais faire une liste de mes topics mais sans un LIMIT qui est très lourd (je vous apprends rien en vous disant qu'il sélectionne toutes les entrées et les tries juste après). Donc je me demande comment pourrais-je faire faire sans utiliser ce LIMIT. Donc voilà, merci d'avance. IgiX Amicalement IgiX |
melimelo
|
# Posté le 13/10/2008 à 21:58:54 |
![]() Groupe : Membres |
Ben je pense pas qu'il soit possible de faire un Limit de 36 manière différentes, ni qu'il en existe 3000 équivalents.
Je penses que tu n'as pas beaucoup le choix ... Cordialement Melimelo Ah okey :noel: |
IgiX
|
# Posté le 13/10/2008 à 22:01:12 |
Qui tente rien, n'a rien!![]() Groupe : Membres |
Roh, mais le forum du sdz, je sais qu'il n'en utilise pas !
Amicalement IgiX |
melimelo
|
# Posté le 13/10/2008 à 22:09:18 |
![]() Groupe : Membres |
Ah bon
??Ils sont pas passé sous PostGreSql le sdz non ? ![]() C'est peut-être pour ca
Ah okey :noel: |
IgiX
|
# Posté le 13/10/2008 à 22:11:37 |
Qui tente rien, n'a rien!![]() Groupe : Membres |
non, non, en surfant y a un bout de temps, j'avais trouvé "une partie" des brouillons qui avaient servi à la partie SQL du forum...
Amicalement IgiX |
Tracker
|
# Posté le 13/10/2008 à 22:16:57 |
![]() Groupe : Membres |
Calcule (efficacement) un numéro de page à la création de chaque post sur lequel tu mets un indexe.
Les sélection paginées seront de fait optimisées. Tracker. |
IgiX
|
# Posté le 13/10/2008 à 22:21:04 |
Qui tente rien, n'a rien!![]() Groupe : Membres |
Tracker, tu pourrais pas m'indiquer un endroit où on en parle, car je ne comprends que de loin le concept (a vue d'oeil certains point me trottinent dans la tête
Amicalement IgiX |
Tracker
|
# Posté le 13/10/2008 à 22:42:44 |
![]() Groupe : Membres |
|
jaye
|
# Posté le 14/10/2008 à 00:29:04 |
![]() Groupe : Membres |
Citation : IgiX
(je vous apprends rien en vous disant qu'il sélectionne toutes les entrées et les tries juste après) un LIMIT ne fais pas de tri pourtant quelles sont tes sources ? Redimensionner, optimiser, convertir en GIF PNG ou JPEG des photos et des images... C'est trop facile avec EasyPict |
harcher81
|
# Posté le 14/10/2008 à 00:44:25 |
Et oui, c'est moi![]() Groupe : Membres |
L'idée de tracker est simple et peut très bien fonctionné, mais je pense que le sdz fait autrement.
Il doit y avoir une id unique statique et un id dynamique, lorsque tu poste un nouveau topic tu fais à id dynamique un +1 sur le dernier (comme normalement). Ensuite tu détermines avec le where quel id prendre (avec quelques calculs c'est facile). Le problème si un topic est supprimmé ou quel quelqu'un poste un nouveau message et bien il manquera un topic dans une page. Le truc c'est de refaire l'id dynamique à chaque message, tu fait -1 à tous els id plus grand que X et le topic X devient le dernier id. Un économie à l'affichage, mais pas à l'enregistrement, comme l'enregistrement représente moins de 5%, un gain considérable. Citation : jaye Citation : IgiX (je vous apprends rien en vous disant qu'il sélectionne toutes les entrées et les tries juste après) un LIMIT ne fais pas de tri pourtant quelles sont tes sources ? Tu peux faire de recherche, mais le limit justement ne trie pas, il récupèrent tout pour ensuite envoyer que les X derniers.
Édité
le 14/10/2008 à 00:46:13
par harcher81
|
IgiX
|
# Posté le 14/10/2008 à 07:22:19 |
Qui tente rien, n'a rien!![]() Groupe : Membres |
en gos, je doit réorganiser ma table à chaque nouveau message, ca me paraît lourd, mais, c'est plus light niveau affichage
Amicalement IgiX |
Tracker
|
# Posté le 14/10/2008 à 08:44:05 |
![]() Groupe : Membres |
C'est pas forcement la peine tout complexifier pour:
Citation [...]Le problème si un topic est supprimmé ou quel quelqu'un poste un nouveau message et bien il manquera un topic dans une page[...] Sachant que tu peux: - marquer l'élément comme verrouiller, déplacé etc... (l'entrée existant toujours). - supprimer l'élément physiquement: Question dans le SDZ, sur une liste d'à priori 50 entrées par page qui va aller vérifier qu'en définitive il n'y en a pas que 49 ou 48 ?? Tracker.
Édité
le 14/10/2008 à 12:03:31
par Tracker
|
Savageman
|
# Posté le 14/10/2008 à 12:01:07 |
Insa : If inside![]() Groupe : Membres |
Cette réponse a aidé l'auteur du sujetTu as un numéro d'ordre pour chaque topic. Le premier topic posté à le numéro 1. Le deuxième topic posté à le numéro 2. Le 3ème topic posté à le numéro 3. Si tu postes un message dans le topic 1 (le plus vieux). Celui-ci doit avoir le numéro d'ordre le plus élevé afin d'apparaître en premier. Tu sélectionnes donc le plus élevé, tu décrémentes tous les topics dont le numéro d'ordre est plus grand que l'ordre du topic courant, puis tu attribues le numéro d'ordre le plus grand au topic courant. Exemple (parce que ça n'est pas forcément clair). Topic | Ordre 1 | 1 2 | 2 3 | 3 Si tu postes un message dans le topic 1, tu fais : a) Récupère le plus grand Ordre existant (à savoir 3). b) Décrémente tous les numéros d'ordre plus grand que l'ordre du topic courant (plus grand que 1 donc). c) Tu attribues le numéro d'ordre récupéré en a) au topic courant. Tu obtiens ceci : 1 | 3 2 | 1 3 | 2 Lorsque tu tries tes sujets en ordre déccroissant, tu auras donc "topic 1", "topic 3", puis "topic 2". Pour sélectionner les X derniers topics, tu fais ceci : a) récupérer l'ordre le plus grand O. b) récupérer les topics dont l'ordre est compris entre O et O-X (sans LIMIT donc). Après, tu as toutes les subtilités de déplacement de sujet, de suppression de sujet. Je te laisse voir ce qui doit se passer dans ce cas (ça n'est pas bien bien compliqué ).
|
IgiX
|
# Posté le 14/10/2008 à 16:23:16 |
Qui tente rien, n'a rien!![]() Groupe : Membres |
il me semble que la methode de Savageman serais moins lourde
![]() Merci quand même Tracker
Amicalement IgiX |
Savageman
|
# Posté le 14/10/2008 à 16:24:40 |
Insa : If inside![]() Groupe : Membres |
La méthode de Tracker est bien adaptée pour les messages d'un sujet sinon.
|
Tracker
|
# Posté le 14/10/2008 à 16:41:42 |
![]() Groupe : Membres |
Ta méthode implique des modifications par lots, donc des locks, car si deux utilisateurs postent en même temps >[Tu sélectionnes donc le plus élevé] ils obtiendront la même valeur (et donc un bug). Une simple jointure classant les posts par numéro décroissant de message est suffisante, ce qui n'interdit en rien d'affecter une page (approximative) à un message pour permettre une pagination.
Tracker.
Édité
le 14/10/2008 à 16:45:49
par Tracker
|
IgiX
|
# Posté le 14/10/2008 à 16:48:04 |
Qui tente rien, n'a rien!![]() Groupe : Membres |
bah, je fais un SELECT MAX(ordre) et j'insc remente et avant, je compte si il y a double entrée et puis si y a 51 messages au lieu de 50, qui ira compter
Amicalement IgiX |
Tracker
|
# Posté le 14/10/2008 à 16:54:02 |
![]() Groupe : Membres |
Deux utilisateurs, si tu ne fais rien, risquent de se retrouver avec un SELECT MAX retournant la même valeur, ce qui pose problème à l'algo de Savageman (création de trous ou plantage). Donc soit, tu lockes (mais quoi ?) soit tu tolères l'erreur...
Tracker.
Édité
le 14/10/2008 à 16:54:24
par Tracker
|
Savageman
|
# Posté le 14/10/2008 à 18:00:44 |
Insa : If inside![]() Groupe : Membres |
Oui bah... Il faut bien entendu utiliser des transactions hein !
|
IgiX
|
# Posté le 14/10/2008 à 18:22:03 |
Qui tente rien, n'a rien!![]() Groupe : Membres |
|
Tracker
|
# Posté le 14/10/2008 à 18:27:37 |
![]() Groupe : Membres |
Citation : Savageman
Oui bah... Il faut bien entendu utiliser des transactions hein ! Les transactions ne gèrent en rien les problèmes d'exclusivité. Tu pourras mettre autant de "begin" que tu voudras dans ton code, le "SELECT MAX" précédent aura le même comportement. Tracker. |
IgiX
|
# Posté le 14/10/2008 à 19:28:39 |
Qui tente rien, n'a rien!![]() Groupe : Membres |
bah tu veux pas me faire le script
Amicalement IgiX |
irnine94
|
# Posté le 14/10/2008 à 21:36:14 |
irnou de l'iglo0![]() Groupe : Membres |
Salut,
Désolé de remonter ce sujet avec deux heures de retard, mais je crois que l'auteur cherchait ce poste : http://www.siteduzero.com/forum-83-144 [...] mps-reel.html Le dernier de la page.
Un homme, c'est comme un chat : Dès qu'on le caresse, sa queue se dresse. Forum téléchargeable style JeuxVideo.Com, script libre, gratuit et autorisé : Forum d'exemple, scripts (.zip), fichier d'aide. |
Jeremie64
|
# Posté le 15/10/2008 à 00:12:26 |
Get over it ! ![]() Groupe : Membres |
http://www.siteduzero.com/forum-83-298 [...] it-mysql.html
Coding is more than a job, more than hobby, more than activity, it's a lifestyle ! PHP is a powerful programming language, if you know how to use it... |
Retour au forum "PHP" ou à la liste des forums
Vous devez être inscrit pour pouvoir poster des messages
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
RSS tutoriels |
RSS news
Édité par Simple IT SARL :
Nous contacter
| Notre blog | Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
97 Zéros connectés |
6 requêtes |
0.0326s (0.0148s)
