Aiuto per raggiungere, o la visualizzazione, record casuali in ColdFusion da una query MySQL?

StackOverflow https://stackoverflow.com/questions/4016505

Domanda

Ho un jquery rullo / scroller che visualizza frammenti di record restituiti dalla mia interrogazione tabella del database 'Suggerimenti utili'. Voglio mantenere lo scroller per circa 15 record, ma non sempre i primi 15 record.

È più efficiente per scrivere una query come:

SELECT *
FROM table
ORDER BY RAND()
LIMIT n

Il che restituisce un risultato casuale o faccio a tornare l'intero query e avere la mia componente ColdFusion servire un numero casuale di risultato della query?

Il futuro del mio scroller includerà record casuale da mio 'Articoli in Vendita' tavolo pure, così ho bisogno di tenere a mente.

È stato utile?

Soluzione

Sono d'accordo con bemace che il ritorno di un ampio set di risultati di valori che non verranno utilizzati per Coldfusion è uno spreco di risorse che non può mai essere recuperati.

Ma attenzione sull'utilizzo MySQL RAND () la funzione per l'ordinazione - una volta che sei oltre 100.000 record, non scala bene ( vedi grafico ), e si dovrebbe un'occhiata a utilizzare alternative .

Altri suggerimenti

A meno che non si sta Cache di un relativamente piccolo e statico interrogazione, di solito è più efficiente di randomizzare i record sul lato database. In questo modo si sta solo tirando 15 record ogni volta, non tutti i record della tabella.

Tornando l'intero set di risultati e gettandoli maggior parte di fuori sarebbe sicuramente meno efficiente.

Quando si arriva al punto di includere dati provenienti da altre tabelle è possibile eseguire un'altra query come quello che hai e poi rimescolare i risultati insieme in ColdFusion.

Per ragioni di completezza, qualcosa di simile è possibile, anche se troppo lento per essere pratico:

( SELECT * FROM table1 )
UNION
( SELECT * FROM table2 )
ORDER BY RAND()
LIMIT 30 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top