Vale a pena mudar uma PRIMARY KEY do tipo NVARCHAR para o tipo INT?
Em nosso banco de dados SQL SERVER 2008 R2, temos umCOUNTRIES
tabela referencial que contém países. oPRIMARY KEY
é uma coluna nvarchar:
create table COUNTRIES(
COUNTRY_ID nvarchar(50) PRIMARY KEY,
... other columns
)
A chave primária contém valores como "FR", "GER", "US", "UK", etc. Essa tabela contém no máximo 20 linhas.
Nós também temos umSALES
tabela contendo dados de vendas:
create table SALES(
ID int PRIMARY KEY
COUNTRY_ID nvarchar(50),
PRODUCT_ID int,
DATE datetime,
UNITS decimal(18,2)
... other columns
)
Essa tabela de vendas contém uma coluna chamadaCOUNTRY_ID
também do tiponvarchar
(não é uma chave primária). Esta tabela é muito maior, contendo cerca de 20 milhões de linhas.
Dentro do nosso aplicativo, ao consultar noSALES
mesa, filtramos quase todas as vezes noCOUNTRY_ID
. Mesmo assim, leva muito tempo para executar a maioria das consultas de agregação (mesmo com os índices apropriados no lugar)
Estamos em uma fase de desenvolvimento para melhorar o desempenho da consulta noSALES
mesa. Minha pergunta é:
Vale a pena mudar oCOUNTRY_ID
digite denvarchar(50)
para o tipoint
? Se a colunaCOUNTRY_ID
é convertido em ambas as tabelas para o tipoint
, posso esperar um melhor desempenho ao ingressar nas duas tabelas?