Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Tenho uma tabela com cerca de 17 milhoes de registro, só em fazer uma busca com o limite de 1 registro demora....
Alguem sabe como trabalhar com tabelas grande?
Tenho uma tabela com cerca de 17 milhoes de registro, só em fazer uma busca com o limite de 1 registro demora....
Tá usando [inline]ORDER BY[/inline]? Se estiver, o problema pode estar aí. Quando você altera a ordenação padrão do retorno, primeiro todas as linhas são buscadas, depois ordenadas e só então é retornado o intervalo desejado.
Procure executar a mesma consulta adicionando um [inline]EXPLAIN[/inline] no início e poste aqui o resultado.
Olá amigo,
Realmente funcionou, mais como pegar o ultimo registro ? Se "order by" padrão parece ser ASC ?
No aguardo
Não tem outro campo que pode ser buscado, tipo: datacadastro/hora, se tiver pode colocar esse campo na SQL
>
Olá amigo,
Realmente funcionou, mais como pegar o ultimo registro ? Se "order by" padrão parece ser ASC ?
No aguardo
Crie um índice no campo que será responsável pela ordenação. Se possível - não for utilizar join nesta tabela - você pode tentar criar partições
Crie um índice no campo que será responsável pela ordenação. Se possível - não for utilizar join nesta tabela - você pode tentar criar partições
Teria um exemplo em codigo ?
alter table nomedatabela add index nomedacoluna
alter table nomedatabela partition by hash(nomedacoluna) partitions 10
Note que qualquer uma das operações pode demorar um tanto devido à quantidade de registros.
Oque eu preciso agora é ordenar os registros sem order by, ou mudar o padrao de ASC para DESC
não existe isso de mudar o padrão pra [inline]desc[/inline]. O que você precisa é de um índice.
select nome, idade, endereço, cadastro from usuario order by cadastro desc
demora pra caramba
alter table cadastro add index cadastro
select nome, idade, endereço, cadastro from usuario order by cadastro desc
rapidim :)
Amigo Qual a finalidade do alter table? Porque esta demorando do mesmo jeito... Oque eu quero e fazer consulta de "1" registro no meio de milhoes sem demorar mais do que 1 segundo, é possivel? Ps: ultimo registro.
brother.. nao saber o quê é "alter table" é fod...
acho melhor vc pedir a um profissional qualificado para auxiliar no seu serviço..
>
brother.. nao saber o quê é "alter table" é fod...
acho melhor vc pedir a um profissional qualificado para auxiliar no seu serviço..
alter table eu sei oque é, eu não sei a finalidade de usar em cima do que eu quero --'
você criou a porcaria do índice?
informe a estrutura da tabela e a consulta que está tentando realizar.
Rapaz ja consegui, o indice tava ok. Mais tinha que fazer o select buscando o indice...
"SELECT imei,date FROM gprmc USE INDEX (date_3) WHERE imei = '353564' ORDER BY date DESC LIMIT 1"
BOM C FOR NO MYSQL.....
Com essa massa de dados ai as coisas começam a engrossar eu particulamente acho que esse numero total ja foge do que realmente é o correto...
Na minha visão o correto seria varias tabelas com diversos relacionamentos e não apenas uma .....
São muitas coisas que vão influenciar:
1 - Tipo de dados um simples varchar pode influenciar muito ex: varchar(200) para um campo de CEP que poderia ser resolvido com char(9) , int, float, etc..
2 - Storage Engine - existem diversos tipos cada um com sua caracteristica InnoDB, MyISAM, archive, etc...
3 - Otimização de querys - Evitar (*), usar views, stored procedures, etc...
5 - order by rand() jamais!!!!
4 - Chave primaria
5 - Usar o memcache
6 - Se usar PHP usar o improved mysql (mysqli)
7 - Prepared Statements (acho que seria a solucao no momento)
Tem um exemplo abaixo da uma olhada:
http://tableless.com.br/prepared-statements-no-mysql