Mysql
 sql >> Database >  >> RDS >> Mysql

Come ordinare i risultati di una query in modo casuale e selezionare righe casuali. (MySQL)

Se non ti dispiace sacrificare la complessità delle operazioni di inserimento/aggiornamento/eliminazione per la velocità nella selezione, puoi sempre aggiungere un numero di sequenza e assicurarti che venga mantenuto su inserimento/aggiornamento/eliminazione, quindi ogni volta che esegui una selezione, seleziona semplicemente su uno o più numeri casuali all'interno di questo intervallo. Se la colonna "sequenza" è indicizzata, penso che sia il più veloce possibile.

Un'alternativa è "mescolare". Aggiungi una colonna di sequenza, inserisci valori casuali in questa colonna e, ogni volta che selezioni i record, ordina in base alla colonna della sequenza e aggiorna le sequenze di record selezionate con nuovi valori casuali. L'aggiornamento dovrebbe interessare solo i record che hai recuperato, quindi non dovrebbe essere troppo costoso ... ma potrebbe valere la pena eseguire alcuni test sul tuo set di dati.

Questa potrebbe essere una cosa abbastanza malvagia da dire, ma la dirò comunque ... c'è mai bisogno di visualizzare dati "casuali"? se stai cercando di visualizzare record casuali, potresti aver sbagliato qualcosa.

Pensa ad Amazon ... mostrano prodotti casuali o mostrano quelli popolari e "cose ​​che altre persone hanno comprato quando hanno guardato questo". SO ti dà un elenco di domande casuali a destra di qui o un elenco di domande correlate? Solo qualche spunto di riflessione.