Estou dando uma lida sobre particionamento de Tabelas utilizando o MySQL para que eu possa colocá-la em prática aqui na empresa.
Entendi que há algumas formas de criar o particionamento partir das novas versões do MySQL, sendo elas: Key, Range, Date, etc.
Uma dúvida ?!?!
Criei a Tab1 com particionamento por Year of Date .. da seguinte forma:
CREATE TABLE tab1 (
id int not null,
nome char(50) not null,
data datetime not null
) ENGINE = MyISAM
PARTITION BY RANGE(YEAR(data)) (
PARTITION p0 VALUES LESS THAN(2000),
PARTITION p1 VALUES LESS THAN(2001),
PARTITION p2 VALUES LESS THAN(2002),
PARTITION p3 VALUES LESS THAN(2003),
PARTITION p4 VALUES LESS THAN(2004),
PARTITION p5 VALUES LESS THAN(2005),
PARTITION p6 VALUES LESS THAN(2006),
PARTITION p7 VALUES LESS THAN(2007),
PARTITION p8 VALUES LESS THAN(2008),
PARTITION p9 VALUES LESS THAN(2009),
PARTITION p10 VALUES LESS THAN(2010),
PARTITION p11 VALUES LESS THAN(MAXVALUE)
);
Quando eu fiz uma carga de 10.000 Registros comparando a Tab1 com a Tab2 (que não havia particionamento) os tempos foram: Tab1 = 00:00:18 e Tab2 : 00:06:51.
Ao pesquisar, li que se eu fizer um SELECT usando um BETWEEN para o campo DATA, na Tab1 ele lê somente os registros conforme os anos dos parâmetros que eu passar, enquanto a Tab2 irá ler a tabela inteira para buscar os registros que atendam. Com isso o ganho de performance.
Porém se eu fizer um SELECT com qualquer outro filtro que não seja do campo DATA, ele irá ler a tabela inteira tanto Tab1 como Tab2.
Há alguma forma de eu criar outros particionamentos para a Tab1, ou seja, pelo campo DATA conforme exibido acima e pelo campo ID por ex:.?
Pergunta
Felipe Basso
Bom dia pessoal,
Estou dando uma lida sobre particionamento de Tabelas utilizando o MySQL para que eu possa colocá-la em prática aqui na empresa.
Entendi que há algumas formas de criar o particionamento partir das novas versões do MySQL, sendo elas: Key, Range, Date, etc.
Uma dúvida ?!?!
Criei a Tab1 com particionamento por Year of Date .. da seguinte forma:
Quando eu fiz uma carga de 10.000 Registros comparando a Tab1 com a Tab2 (que não havia particionamento) os tempos foram: Tab1 = 00:00:18 e Tab2 : 00:06:51.
Ao pesquisar, li que se eu fizer um SELECT usando um BETWEEN para o campo DATA, na Tab1 ele lê somente os registros conforme os anos dos parâmetros que eu passar, enquanto a Tab2 irá ler a tabela inteira para buscar os registros que atendam. Com isso o ganho de performance.
Porém se eu fizer um SELECT com qualquer outro filtro que não seja do campo DATA, ele irá ler a tabela inteira tanto Tab1 como Tab2.
Há alguma forma de eu criar outros particionamentos para a Tab1, ou seja, pelo campo DATA conforme exibido acima e pelo campo ID por ex:.?
Abs.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.