Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

borges02

Comando FORCE INDEX() do mysql!

Recommended Posts

Boa tarde!

 

Tenho uma tabela (PESSOAS) COM OS SEGUINTES CAMPOS: (CODIGOPES, NOMEPES, SRFPES, NASCPES, FONEPES, FAXPES, CELULARPES, DTCADPES, FOTOPES)...

 

Os campos: (CODIGOPES, NOMEPES, SRFPES, FONEPES) estão todos indexados... Estão com os seguintes nomes: (Icodigopes, Inompes, Isrfpes, Ifone)...

 

Estou tentando fazer um select ordenando pelo campo (NOMEPES) mas não estou conseguindo... Estou tentando fazer através do FORCE INDEX, mas não estou conseguindo...

 

Estou tentando da seguinte forma:

 

SELECT codigopes, nomepes, srfpes, fonepes FROM regiao force index(Inomepes)... Se eu fizer uma consulta com apenas dois campos, exemplo: codigopes e nomepes, a consulta funciona sem problemas, mas com

4 campos não estou conseguindo...

 

Se eu colocar o ORDER BY funciona mas o resultado da consulta é muito demorado, pois essa tabela tem +/- 200.000 registros...

 

Alguem sabe informar se tem como ordenar os registros através da indexação da coluna?

 

Desde já, agradeço pela ajuda e atenção de todos...

Muito Obrigado...

Share this post


Link to post
Share on other sites

entao você tem q tacar um index nessa coluna, senao nada feito

 

alter table tabela ADD INDEX (campo)

Share this post


Link to post
Share on other sites

beleza Giesta?

 

Então, as colunas que estou usando para realizar a consulta, estão todas indexadas.. Estão com os seguintes nomes: (Icodigopes, Inomepes, Isrfpes, Ifone)...

 

O meu problema é que não estou conseguindo ordenar os registros pelo nome...

 

Estou tentando fazer um select ordenando pelo campo (NOMEPES) mas não estou conseguindo... Estou tentando fazer através do FORCE INDEX, mas não estou conseguindo...

 

Estou tentando da seguinte forma:

 

SELECT codigopes, nomepes, srfpes, fonepes FROM regiao force index(Inomepes)... Se eu fizer uma consulta com apenas duas colunas, exemplo: codigopes e nomepes, a consulta funciona sem problemas, mas com

4 colunas não estou conseguindo...

 

Se eu colocar o ORDER BY funciona mas o resultado da consulta é muito demorado, pois essa tabela tem +/- 200.000 registros...

 

Eu gostaria de saber se tem como ordenar os registros pela coluna(NOMEPES) através da indexação sem usar o order by? com o order by da certo, o problema é que na hora de carregar os registros no DataGridView fica muito demorado, o processo é lento...

Share this post


Link to post
Share on other sites

beleza, jah tem index, mas o index eh composto, como você quer ordernar por uma campo soh você cria um NOVO index soh com aquele campo

tambem seria inteligente aumentar o buffer de order by no my.conf (se for possivel)

Share this post


Link to post
Share on other sites

beleza Giesta?

 

Então, estou usando index simples... Cada campo que uso na consulta possui o seu index... Para o campo (NOMEPES) que estou querendo ordenar, o nome do seu index é (Inomepes)...

 

Estou tentando da seguinte forma: SELECT codigopes, nomepes, srfpes, fonepes FROM regiao force index(Inomepes)... Se eu fizer uma consulta com apenas dois campos, exemplo: codigopes e nomepes, a consulta funciona sem problemas, mas com 4 campos não estou conseguindo...

 

Se eu colocar o ORDER BY funciona mas o resultado da consulta é muito demorado, pois essa tabela tem +/- 200.000 registros...

Share this post


Link to post
Share on other sites

Se eu fizer dessa forma: SELECT CODIGOPES, NOMEPES, SRFPES, FONEPES FROM REGIAO ORDER BY NOMEPES,,,,,,, o resultado da consulta é muito lento...

 

Eu gostaria de saber se tem como eu ordenar pelo campo(NOMEPES) de outra forma? onde o resultado seja mais preciso... Por isso estou tentando pela indexação...

 

Queria ver contigo se tem como ordenar os registros pelo campo(NOMEPES) através da indexação, ou uma forma que o resultado seja mais rápido...

Share this post


Link to post
Share on other sites

Kra, tem algo errado ai....

 

posta o Explain dessa consulta SEM USAR O FORCE, usando SOH o order by

Share this post


Link to post
Share on other sites

Giesta,

 

A consulta é a seguinte: EXPLAIN SELECT CODIGOPES, NOMEPES, SRFPES, FONEPES FROM REGIAO ORDER BY NOMEPES.....

 

O resultado é o seguinte:

 

ID = 1

SELECT_TYPE = simple

TABLE = regiao

TYPE = all

POSSIBLE_KEYS = null

KEYS = null

KEYS_LEN = null

REF = null

ROWS = 201166

EXTRA = using filesort

Share this post


Link to post
Share on other sites

Pra começar ele nao tah usando o index pra ordenar e alem disso sua informaçao eh grande d+ para a memoria RAM

 

tenta rodar a consulta assim

 

SELECT CODIGOPES, NOMEPES, SRFPES, FONEPES FROM REGIAO ORDER BY left(NOMEPES,5)

Share this post


Link to post
Share on other sites

bom, 200mil linhas nao eh algo q se ordena todo dia....

e pra você soh tem uma solucao, ir aumentando seu sort_buffer_size ateh q ele talvez passe a usar o index, pode ser mudado por consulta ou dentro do my.conf ou por linha de comando na hora de subir o banco

no caso da consulta, eh a abaixo

 

 

set sort_buffer_size = 100*POWER(10,6)

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.