la domandona catartica tanto attesa:
e come posso ordinare un database mysql? esiste qualche funzione già bella pronta tipo, ordina in base al valore di questa colonna, assegna a questa colonna il numero di ordine così generato?
la domandona catartica tanto attesa:
e come posso ordinare un database mysql? esiste qualche funzione già bella pronta tipo, ordina in base al valore di questa colonna, assegna a questa colonna il numero di ordine così generato?
un modo è semplicemente con la query-base
SELECT dato FROM tabella ORDER BY (nomecolonna da usare come key).
altrimenti estrai i dati che vuoi in un array e poi ordini l'array in qualche modo
Ultima modifica di seneca : 23-08-2006 alle ore 23.26.51
-- Aut Roma Aut Nihil!
- --> Progetto Wallpaper: centinaia di sfondi free (simpsons, dragonball, animali, sport, arte...)
- --> Versioni latine e storia romana: COMING SOON!
- --> Sono disponibile per scambio banner 88*31, no siti in costruzione
Cerco di chiarire un po' le cose:
- "ordinare un database", tecnicamente, non è possibile, almeno inteso come memorizzare i dati ordinandoli già a piacimento. Questo perché i dati risulteranno ordinati in base ad un complesso sistema di indici (noto soltanto a chi ha creato il DBMS - sistema di gestione del DB) che hanno lo scopo di velocizzare il maggior numero possibile di ricerche.
- puoi, grazie anche a questi indici, estrarre i dati nell'ordine che preferisci: una query un po' più completa di quella di seneca è questa:- per quanto riguarda le tue esigenze, hai davvero bisogno di inserire in un campo del database la posizione del record nell'ordine che stabilisci? Perché è buona norma NON inserire nel database dati che possono essere facilmente ricavati da altri (in questo caso, elencando i record in ordine e assegnando il numero via script)Codice:SELECT [elenco campi] FROM [elenco tabelle] WHERE [condizioni di selezione o filtro] ORDER BY [criteri di ordinamento {ASC | DESC}]
Statemi bene...
Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?
When you don't know your next step... improvise
ALTERVISTA WANTS YOU!
Vuoi diventare moderatore su AlterVista? Scopri come...
beh, mi pareva che farlo una volta sola e poi averlo gia fatto usasse si un po' di spazio in più, ma poi richiedesse meno tempo per le query.
comunque ora guardo come funge e decido se ordinarlo effettivamente o solo usare la query che mi suggerite. grazie a tutti.
tu non hai potere di ordinare il db.Originalmente inviato da skydrake
Inoltre tenerlo ordinato e inserire in maniera ordinata (perchè se vuoi averlo ordinato devi anche inserire in maniera ordinata) costerebbe piu' che a tenerlo ordinato e ad ordinarlo ogni qual volta che ti serve...
Non so se mi HO spiegato bene
:)))))
per tenerlo ordinato intendevo poter scrivere una query del genere:
select nick from table where rank=10344
che è una semplice ricerca della riga il cui rank vale 10344
che porta via poco tempo
mentre non avendo una colonna rank e volendo fare una query tipo
select nick from table order by punteggio DESC LIMIT 10343,10344
mi occupa molto più tempo macchina. in fondo prima lo ordina ogni volta... e sono una bella dose di dati da valutare.
potrei anche scrivere una funzione di ricerca più veloce ad hoc, tipo una bella ricerca logaritmica che potrebbe portare a casa il risultato (quasi, ovvero nel caso migliore in cui tutti i punteggi siano pieni e singoli) in log(2)(n) passaggi.
ma questo solo per la ricerca di una singola posizione... e dovrei rifare il codice ogni volta...
preferisco sacrificare un po' di spazio in tal caso circa 20000 integer... credo siano sui 80k di spazio se un integer occupa 4 byte... non ricordo... comunque dovrebbe essere una stima per eccesso...
certo, le righe non sono inserite in ordine, ma possono essere lette singolarmente seguendo l'ordine.
quindi a me basta ordinarlo 1 volta quando aggiorno la tabella, e poi ho la pappa pronta per tutti quelli che verranno a leggerla.
ora non ho ancora 20mila righe...
per ora sono a 500
ma il discorso regge, e le 20k righe arriveranno e dovranno essere gestite :(
quindi perchè non essere pronti :D
non ho capito quanto hai detto. Cmnq 20000 righe non sono niente per un db e un db ha una funzione di ricerca che è migliore di lgn. Ci hanno studiato per anni sui dbms. Non pensare di poter scrivere una tua funzione di riceca migliore di quello che hanno i dbms
boh. ora sono curioso. prima volta che ho tempo guardo la differenza in termini di tempo inpiegato dalla query a fornire il risultato desiderato.
guarda quanto tempo impiega google a darti un risultato e quelli sicuramente hanno piu' di 20mila righe e ti danno piu' di un risultato...