Relazione di due tabelle

martedì 29 settembre 2009 - 20.08

PEPE Profilo | Senior Member

Salve a tutti,
oggi mi è sorto un grande dubbio in merito alla relazione di due tabelle.
Mi spiego meglio ho creato 2 tabelle con le relative colonne tra cui la chiave primaria e la chiave esterna. Il tipo di dati che ho utilizzato è stato intero...e qui viene il bello. Un collega mi ha fatto cambiare il tipo di dato da intero a "testo", on ricordo bene se varchar,, nvarchar sostenendo che le join sono più veloci.
Ovvero meglio un "testo(2)" o "testo(3)" ecc. che un int. Purtroppo non ho potuto fare le prove ma sono proprio curioso di sapere il motivo perchè non mi tornano certi conti :P.

Grazie 1000,
Luca.

lbenaglia Profilo | Guru

>Un collega mi ha fatto cambiare il tipo di dato da intero a "testo", on
>ricordo bene se varchar,, nvarchar sostenendo che le join sono
>più veloci.
Con che dati alla mano?
Crea due esempi e popola le tabelle con qualche milione di righe, esegui la stessa query e valuta i tempi di esecuzione.

Il datatype int occupa 4 bytes mentre varchar(2) o varchar(3) occupano rispettivamente 2 o 3 bytes.
Come vedi gli ultimi 2 esempi sono più compatti e quindi in una stessa index page ci saranno più righe, minimizzando l'I/O su disco.
Occorre però valutare coi fatti se questo si tradurrà automaticamente in un vantaggio prestazionale...

>Grazie 1000,
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5