Domanda

Devo visualizzare molte pagine di notizie in un sito.
Devo fare l'impaginazione nella query db usando limit o farlo nel mio script php dopo aver ottenuto tutti i risultati?

È stato utile?

Soluzione

Usa limite in SQL! Ogni volta!

Altrimenti stai lanciando molti più dati di quanti ne hai bisogno, il che rende gli script inutilmente lenti e causerà problemi di scalabilità all'aumentare della quantità di dati nelle tue tabelle.

Il limite è tuo amico!

Altri suggerimenti

Usa limite - non vuoi trasferire masse di dati dal database al motore di scripting se puoi evitarlo.

Se vuoi lavorare solo con un DBMS che supporti questo, invece di farlo sul DBMS. Se desideri supportare altri DBMS in futuro, aggiungi un livello tra quelli che possono gestire in base al DBMS corrente.

Puoi utilizzare alcune librerie esistenti per aiutarti:

Pear :: Pager può aiutare con l'output e limitare il traffico del database a solo ciò di cui hai bisogno, puoi utilizzare un wrapper fornito negli esempi forniti.

Ecco un tutorial Ho appena cercato su Google che ha tutto ...

Oltre a utilizzare LIMIT , suggerirei di utilizzare una clausola WHERE esplicita per impostare l'offset e ordinare i risultati su quella colonna. Ad esempio:

--- First page (showing first 50 records)
SELECT * FROM people ORDER BY id LIMIT 50
--- Second page
SELECT * FROM people WHERE id > 50 ORDER BY id LIMIT 50

Ciò limita ulteriormente il numero di righe restituite a quelle all'interno dell'intervallo desiderato. L'uso dell'approccio WHERE (al contrario di una clausola LIMIT con un offset separato, ad es. LIMIT 50,50 ) consente di gestire efficacemente il paging attraverso record con altre chiavi naturali, ad es in ordine alfabetico per nome o per ordine di data.

Personalmente, vorrei usare la query per farlo. Ovviamente, ciò può cambiare se hai a che fare con AJAX e simili, ma fare semplicemente un limite di base nella query e produrre i risultati è semplice ed efficiente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top