Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Indici SQL

  1. #1

    Indici SQL

    Scusate il disturbo, sto preparando l'esame di base di dati che avrò tra pochi giorni. Nella pratica non ho tantissimi problemi, ma ci sono delle domande teoriche sugli indici che proprio non riesco a rispondere. Spero che qualcuno possa aiutarmi.

    IMG_0249.jpg

    Ho postato la domande in cui trovo difficoltà.
    Vi ringrazio in anticipo per l'aiuto.

  2. #2
    Ciao,

    in linea generale ha senso creare degli indici sugli attributi che compaiono nella clausola WHERE.

    Quindi, nel tuo caso specifico scrivi la query e di che puoi mettere indici i campi nel where.

    Il motivo e' che il dbms si crea una particolare struttura ad esempio ad albero con gli indici e quindi le ricerche (query) sui campi indice saranno piu veloci
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  3. #3
    Ti ringrazio intanto per l'aiuto.
    La query dovrebbe essere

    select C.Nome
    from CAVALLO C, CAVALLO CF, CAVALLO CS
    where C.Padre=CF.Padre
    and CF.Padre=CS.Padre
    and CF.Sesso= 'M'
    and CS.Sesso= 'F'

    Non sono sicuro che sia giusto non avendo, purtroppo, le soluzioni.

    Quindi in questo caso dovrei mettere gli indici su C.Padre, CF.Padre, CS.Padre CF.Sesso CS.Sesso?

    E perché ciò mi porterebbe efficenza di esecuzione?

    Grazie

  4. #4
    dunque credo hai un po di confusione.

    non devi mettere indici su C.Padre, CF.Padre, CS.Padre CF.Sesso CS.Sesso in quanto queste sono solo "istanze" dell'entita CAVALLO.

    Gli indici si inseriscono al momento della creazione quindi CREATE TABLE... (e anche a tabella creata con alter table...)

    Quindi tu metteresti gli indici sui campi : Padre e Sesso della tabella CAVALLO.

    Perche' mettere gli indici ti da vantaggi?
    come dicevo prima, quando crei un indice, il dbms (mysql o altri) si crea una struttura quale albero binario di ricerca o tabella hash o altro.

    Ora non so se lo sai ma le ricerche ad esempio sugli "alberi di ricerca" hanno tempi dell'ordine del logaritmo quindi OTTIMI.

    quando tu andrai a fare una query il dbms agira' molto piu velocemente in quanto sfruttera l'albero di ricerca.

    Spero di essere stato chiaro
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  5. #5
    Sto incominciando a capire, scusami per la mia ignoranza ma non avendo potuto seguire il corso per lavoro ho qualche buco che non sono riuscito da solo a colmare. So che gli indici hanno la stessa funzionalità gli indici analitici dei libri, cioè invece di andare alla ricerca di tutte le pagine si va alla ricerca solo della parola chiave che poi ci indirizza alla pagina. Ora quello che mi chiedo come faccio a scegliere tra indici hash e B-tree?. I B-tree sono sempre i migliori?
    Scusa ancora per il disturbo.

  6. #6
    Quote Originariamente inviata da Pucco123 Visualizza il messaggio
    Sto incominciando a capire, scusami per la mia ignoranza ma non avendo potuto seguire il corso per lavoro ho qualche buco che non sono riuscito da solo a colmare. So che gli indici hanno la stessa funzionalità gli indici analitici dei libri, cioè invece di andare alla ricerca di tutte le pagine si va alla ricerca solo della parola chiave che poi ci indirizza alla pagina. Ora quello che mi chiedo come faccio a scegliere tra indici hash e B-tree?. I B-tree sono sempre i migliori?
    Scusa ancora per il disturbo.
    dunque quelli ad albero sono molto buoni.

    Ti posto una piccola definizione di differenze presa dal web :
    ��Indici ordinati: i valori di chiave kivengono mantenuti ordinati, in modo da poter essere reperiti piùefficientemente
    ��Indici hash: si usa una funzione hashper determinare la posizione dei valori di chiave ki; questi indici tuttavia non forniscono prestazioni soddisfacenti per ricerche di intervallo
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  7. #7
    E' uscito un font un po troppo grande

    comunque , indici ordinati intende alberi
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  8. #8
    Scusami ancora per l'ultima volta

    Ma cosa si intende per una ricerca di intervallo?

  9. #9
    Quote Originariamente inviata da Pucco123 Visualizza il messaggio
    Scusami ancora per l'ultima volta

    Ma cosa si intende per una ricerca di intervallo?

    ad esempio una query con l'uso di BETWEEN
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

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.