Domanda

Questo è piuttosto banale, ma ho notato su SO che invece di un offset stanno usando i numeri di pagina. So che la differenza è minore (moltiplicare il numero di pagina per le righe su una pagina o dividere l'offset per le righe su una pagina), ma mi chiedo se uno sia consigliato sull'altro.

Alcuni siti, come Google, utilizzano ovviamente un sistema più complicato perché devono tenere traccia della tua ricerca effettiva. Ma sto pensando a un sito semplice dove questo non ha importanza.

Qual è la tecnica consigliata?

È stato utile?

Soluzione

Usa offset. Se scegli di consentire il numero variabile (o definito dall'utente) di risultati per pagina, la codifica è semplice.

Altri suggerimenti

Gli offset sono utili anche per l'ottimizzazione quando il set di risultati che si sta impaginando è molto grande.

Questo perché in alcuni casi ti consente di fare

WHERE my_sortorder >= (some offset)
LIMIT 10

anziché

LIMIT 10 OFFSET 880

che è meno efficiente. Un indice può farti andare direttamente a tutte le righe corrispondenti a my_sortoder > = alcuni offset , ma quando usi OFFSET con LIMIT, deve prima trovare e scansionare tutte le 880 righe precedenti.

L'uso di una combinazione di limit e offset è la soluzione migliore perché non richiede ulteriori calcoli per capire il nuovo numero di pagina se si modifica il limite.

Ad esempio, con 20 oggetti per pagina, supponendo che la pagina 1 restituisca oggetti con indice 0 - 19, se sei nella pagina 2, allora dovresti guardare gli oggetti con indice 20 - 39. Se ora decido di cambiare il mio limite a 10, il comportamento più comune sarebbe quello di visualizzare oggetti con indice 20 - 29.

Per realizzare il comportamento sopra descritto è necessario ricalcolare la pagina in cui si suppone si debba utilizzare, utilizzando il nuovo limite. Sopra, se dovessi cambiare il limite in 10, ma mantieni il numero di pagina su 2, visualizzerai gli oggetti con indice 10 - 19. Dovresti ricalcolare il numero di pagina in 3, in modo che gli oggetti 20 - Sono stati visualizzati 29.

La mia opinione, ovviamente.

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