Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [query] importanza dell'ordinamento dei campi

    salve gente,
    è importante avere una tabella con i campi ben ordinati?

    mi spiego meglio

    id-> autoincrement
    data -> date
    numero -> tinyint
    username -> varchar
    testo -> text



    è importante metterli in questo ordine o posso mettere la data dopo il testo per la costruzione della tabella?

    altra domanda fagiana :

    nella query cambia qualcosa in termini di velocità se faccio:

    select data, numero, username, ....

    oppure

    select numero, testo, data, username...




  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534
    Non esiste "un ordine" dei campi. è tutto lo stesso, compresa la seconda domanda.
    Viene riportato che il modo piu' celere sia SELECT * perchè invia tutto, mentre la distinta dei campi è un filtro che viene applicato dopo avere estratto tutti i campi (vengono sempre estratti tutti) e prima dell'invio al buffer. Occupa meno memoria, ma più tempo di elaborazione. Dipende dalla consistenza del database.


  3. #3
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    Originariamente inviato da pierotto
    Non esiste "un ordine" dei campi. è tutto lo stesso, compresa la seconda domanda.
    Viene riportato che il modo piu' celere sia SELECT * perchè invia tutto, mentre la distinta dei campi è un filtro che viene applicato dopo avere estratto tutti i campi (vengono sempre estratti tutti) e prima dell'invio al buffer. Occupa meno memoria, ma più tempo di elaborazione. Dipende dalla consistenza del database.

    questo in teoria... nella pratica il database per ottimizzare le operazioni può anche non estrarre tutti i campi

    tutto quello che dici ci viene pari pari dalle teorie degli insiemi e dall'algebra relazionale e sono fondamentali per comprendere i database, ma ogni database svolge le operazioni nel modo che ritiene più opportuno

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534
    Originariamente inviato da kuarl
    questo in teoria... nella pratica il database per ottimizzare le operazioni può anche non estrarre tutti i campi
    Certo che può non estrarre tutto, se per tutti i campi si intende tutta la tabella. Infatti le tuple vengono filtrate a priori con la clausola WHERE.

    No se per tutti i campi si intendono tutti i campi della tupla. La tupla viene sempre estratta tutta, la tupla che soddisfa la clausola where se where esiste. Poi viene applicato il filtro della distinta campi da inviare al buffer. Mysql fa così, e gli altri db pure, sull'hd non è fattibile alcunchè se non leggere e scrivere.


  5. #5
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    ehm... per tutti i campi non intendo tutte le tuple, son cose diverse, e non dare per scontato che tutti i database prima si leggono tutti i dati e poi filtrano le informazioni, ogni database fa come meglio crede.

    Altra cosa importante da tenere presente è ke normalmente tutto il database viene caricato in memoria, se questo non è possibile per i limiti del sistema in memoria ne viene caricato quanto più possibile.

    Potrei anche sbagliarmi ma in caso contrario vorrei vedere da dove hai preso la storia che "mysql prima legge tutto poi filtra"

    PS stiamo andando OT

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534
    Originariamente inviato da kuarl
    Potrei anche sbagliarmi ma in caso contrario vorrei vedere da dove hai preso la storia che "mysql prima legge tutto poi filtra"

    PS stiamo andando OT
    Ok per l'OT. Preciso solo che è una tua interpretazione che non so dove hai preso nei miei post. L'invio al buffer per il query result avviene per ultimo, basandosi sulla richiesta dei specifici campi filtrando così tutte le tuple. Cosa che non fa se SELECT * perchè invia tutto senza elaborare il filtraggio. Questo è scritto nel manuale mysql.

    Forse il mio italiano non è corretto visto il fraintendimento. Mi scuso se è il caso.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.