2011-11-29 6 views
0
Table Query: 
Id  Subject LangId replyCount created_at 

Table userLogin: 
Id  userId  Fname Lanme created_at 

J'utilise requête select avec jointure interne pour extraire des données de MySQL, mais il faut environ 5 secondes pour aller chercher 10000 dossiers, je l'ai également utilisé l'indexation sur coulmn LANGID, Pouvez-vous suggérer d'autres façon de le faire fonctionner plus vite?Comment récupérer des données volumineuses de MySQL

select q.id,q.Subject,u.userid,q.replyCount,DATE_FORMAT(q.created_at,'%d-%b-%Y') 
from query as q INNER JOIN userLogin as u on q.userId = u.id where q.LangId = ? 
+0

Je suis newbie à PHP, mysql et à propos de la question supprimée quelqu'un a voté à cette question et il semble que peu de gens répondent à la question votée. –

+1

@ neel.1708 Simplement améliorer votre question à la place! Par exemple, ajoutez des sorties de "EXPLAIN sélectionnez q.id, q.Subject, u.userid, ...", "SHOW CREATE TABLE query" et "SHOW CREATE TABLE userLogin". Sinon, les gens ne pourront pas être d'une grande aide. – sfussenegger

+0

Oui, le fera à partir de la prochaine fois.Merci sfussenegger. –

Répondre

0

Ne sélectionnez pas 10000 enregistrements à la fois.

Pour effectuer une pagination, vous devez exécuter la même requête sur chaque page avec la clause LIMIT, en récupérant les seuls enregistrements requis sur la page.

+0

Si je montre les 50 premiers enregistrements sur la page et les coups de l'utilisateur suivant comment aller chercher les 50 prochains enregistrements et après il clique sur et précédente puis comment montrer 50 précédent en utilisant la limite. –

+0

Pour faire des maths simples: 10.000 lignes de (supposons) 255 octets de rendement 2.550.000 octets ou environ 2 Mo. Ce n'est pas beaucoup, au moins pas de raison pour 5 secondes de temps d'exécution. Je viens de faire une requête similaire sur une base de données en moins de 0,1s. Malheureusement, il est pratiquement impossible de trouver une autre raison sans aucune autre information. – sfussenegger

+0

@ neel.1708 LIMIT ($ pageNumber * $ itemsPerPage), $ itemsPerPage –

0

Utiliser radiomessagerie si u ont des enregistrements de larg, et si vous avez des requêtes complexes, faites une table de vue, puis chercher simplement enregistrer la vue avec l'instruction select unique ..

espère que vous comprenez ..

+0

oui, Sera de la vue être plus rapide que complexe sélectionner une requête? –

Questions connexes