Jump to content
Fivewin Brasil

Index com MySql


Luiz Arruda (ICO)

Recommended Posts

Bom Dia..

Tô fazendo assim para criar Index com MySql

id=code>
id=code>

Onde NOMECLIENTE imagino que seja o nome do index, CADCLI á tabela e NOME_CLI o campo... isto tá certo ???

Outra coisa.. como que eu seto o index ?? tipo ;

Set Index to NOMECLIENTE

desde já Obrigado

Retorne avisando se a dica funcionouid=red>

curruptos.png

Luiz Arruda

Corumbá - MS

ico.corumba@gmai.com

Editado por - ico on 20/08/2010 16:40:23

Editado por - ico on 01/09/2010 09:07:06

Link to comment
Share on other sites

Bom Dia..

Tô fazendo assim para criar Index com MySql

id=code>
id=code>

Onde NOMECLIENTE imagino que seja o nome do index, CADCLI á tabela e NOME_CLI o campo... isto tá certo ???

Outra coisa.. como que eu seto o index ?? tipo ;

Set Index to NOMECLIENTE

desde já Obrigado

Retorne avisando se a dica funcionouid=red>

curruptos.png

Luiz Arruda

Corumbá - MS

ico.corumba@gmai.com

Editado por - ico on 20/08/2010 16:40:23

Editado por - ico on 01/09/2010 09:07:06

Link to comment
Share on other sites

Luiz

Boa tarde

Não sou especialista!

Mas para ordenar as consultas, você deve utilizar ORDER BY nos comandos SELECT Ex.: SELECT * FROM CADCLI ORDER BY NOME_CLI

Os indices no mysql são importantes para melhorar a performance das consultas, tornando-as mas rápidas.

Att

João Bosco

Contagem/MG

FWH 10.6b xHb 1.2.1 WorkShop 4.5

PellesC SQLLIB

Link to comment
Share on other sites

Só vou postar para concordar com o João.

Você só vai precisar dos comandos xBase se for trabalhar com comandos xBase (Acha, sério ??? falei o óbvio hehehehe)

Então é importante ter os índices para que os "Where", "Order By", etc sejam otimizados. Mas você vai conseguir ordenar e filtrar seus dados mesmo sem índices.

Resumidamente, é isso.

Luis Fernando Jr. (Luisão)

Leme/SP

--

FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY + [Ghost/Java]Script

E-Mail: juninho.luisao@gmail.com

MSN: juninho_luisao@hotmail.com

Skype: luis.fernando.jr

Link to comment
Share on other sites

Hummmm!!! eu já tava entrando no browse com Order By Nome,, mas preciso procar por Order by Cod_Cli em tempo de execução ??? Y agora ??

Busca Sensitiva com SQL é possivel ??

Vou dar uma pesquisada.. mas se alguém quiser adiantar o expediente icon_smile_big.gif é que meu ADSL tá Pho... hoje tá não tá estabilizando.. o "tenico" fala que não tem nada e a OI telecom diz que o sinal está normal...

Abraços..

Retorne avisando se a dica funcionouid=red>

curruptos.png

Luiz Arruda

Corumbá - MS

ico.corumba@gmai.com

Link to comment
Share on other sites

Você faz o Order By sempre com o nome do campo. O MySQL se encarrega de escolher o melhor índice. Você pode ver se ele está usando um indice ou não, usando Explain Select * From Cliente Order By Nome, por exemplo.

Você pode também fazer Select * from Cliente Where Nome Like 'Lui%' Order By Nome, desse modo, ele vai mostrar todos os clientes que comecem com "Lui".

Você pode também fazer Where Nome Like '%Luis%', que irá mostrar todos os clientes que tenham Luis em qualquer parte do nome.

Bom, e agora é ir treinando =)

Luis Fernando Jr. (Luisão)

Leme/SP

--

FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY + [Ghost/Java]Script

E-Mail: juninho.luisao@gmail.com

MSN: juninho_luisao@hotmail.com

Skype: luis.fernando.jr

Link to comment
Share on other sites

Bom! Continuando!

No caso da busca sensitiva retirei dos sistemas pois fica muito lento. Banco de dados com 1.000.000 de registros

Neste a pessoa digita o nome completo e depois solicita a busca.

O número de linhas a ser retornado e varrido pelo BD é bêm menor.

Se você faz uma busca por uma ou duas letras é lento, se coloca dois nomes o tempo da busca reduz bastante.

Att

João Bosco

Contagem/MG

FWH 10.6b xHb 1.2.1 WorkShop 4.5

PellesC SQLLIB

Link to comment
Share on other sites

Eu indexei a tabela de cliente pelo nome e na busca incremental quando coloco 'select matricula,nome,cpf from cliente where nome like"'+cString+"% ', o where automaticamente já seleciona o indice associado ao campo nome.

Obs coloque no select somente os campos que você vai precisar apresentar na pesquisa

FWH 8.08/XHB1.1/Pelles/Mysql/fastreport

laurentinocarlos@gmail.com

Montes Claros MG

Link to comment
Share on other sites

Vou postar algo.

Não sei se pode ajudar. mas Vamos lá


IF(! Table("vales_vendedor") )

If MsgYesNo("Tabela cadastro de VALES_VENDEDOR Não encontrada no BANCO DE DADOS"+CRLF+"Deseja cria-la ?",SISTEMA)

BEGIN TRANSACTION

cCMDSQL := " CREATE TABLE `vales_vendedor` ( "

cCMDSQL := cCMDSQL + " `ID_VALES_VENDEDOR` int(11) NOT NULL auto_increment, "

cCMDSQL := cCMDSQL + " `DATA_VALE_VENDEDOR` DATE DEFAULT '0000-00-00' COMMENT 'Data de Lançamento do Vale do Vendedor', "

cCMDSQL := cCMDSQL + " `OBSERVACAO` varchar(30) default '' COMMENT 'Observação do Vale do Vendedor', "

cCMDSQL := cCMDSQL + " `VALOR_VALE_VENDEDOR` decimal(18,2) default 0, "

cCMDSQL := cCMDSQL + " `CODIGO_VENDEDOR` int(06) default 0 COMMENT 'Código do Vendedor', "

cCMDSQL := cCMDSQL + " PRIMARY KEY (`ID_VALES_VENDEDOR`) "

cCMDSQL := cCMDSQL + ") ENGINE=InnoDB DEFAULT CHARSET=latin1 "

SqlExecute( cCMDSQL )

END TRANSACTION

ENDIF

ENDIF

* Agora uma montagem de browse com possibilidade de ordenar clicanco na coluna selecionanda.

* Se tiver alguma coisa a melhorar, me avisem ok...

IF SELECT("vales_vendedor") != 0

vales_vendedor->(DbCloseArea())

ENDIF

cQuery:='select * from vales_vendedor WHERE CODIGO_VENDEDOR = ' + TRANSFORMA_SQL(T_CODI_VENDEDOR,'N',06,0) + ' ORDER BY DATA_VALE_VENDEDOR DESC '

use sql cQuery alias "vales_vendedor" new via 'MYSQL'

vales_vendedor->( DbGoTop())

oDB_VALES_VENDEDOR := TXBrowse():New( oDlg_CD_VALE_VENDEDOR )

oDB_VALES_VENDEDOR:cAlias := "vales_vendedor"

oDB_VALES_VENDEDOR:bKeyDown :={|nKey| if(nkey=13,( T_ID_VALE_VENDEDOR:=vales_vendedor->ID_VALES_VENDEDOR ),) }

oDB_VALES_VENDEDOR:bChange :={|| T_ID_VALE_VENDEDOR:=vales_vendedor->ID_VALES_VENDEDOR }

oDB_VALES_VENDEDOR:bLDblClick :={|| T_ID_VALE_VENDEDOR:=vales_vendedor->ID_VALE_VENDEDOR }

oDB_VALES_VENDEDOR:nMarqueeStyle := MARQSTYLE_HIGHLROW

oDB_VALES_VENDEDOR:nColDividerStyle := LINESTYLE_BLACK

oDB_VALES_VENDEDOR:nRowDividerStyle := LINESTYLE_BLACK

oDB_VALES_VENDEDOR:lColDividerComplete := .T.

oDB_VALES_VENDEDOR:lFooter := .F.

oDB_VALES_VENDEDOR:lRecordSelector := .T.

oDB_VALES_VENDEDOR:nHeaderLines := 1.5

oDB_VALES_VENDEDOR:nDataLines := 1.5

oDB_VALES_VENDEDOR:bClrStd := {|| { CLR_BLACK, IIF((vales_vendedor->(ORDKEYNO()))%2==0, rgb(168,211,255), rgb(255,255,255) ) } }

oDB_VALES_VENDEDOR:bClrSelFocus := {|| { CLR_WHITE, CLR_BLUE } }

*----------------------------------------------------------------------------

oCol := oDB_VALES_VENDEDOR:AddCol()

oCol:bStrData := { || DTOC(vales_vendedor->DATA_VALE_VENDEDOR) }

oCol:cHeader := "Data Lanc"

oCol:cFooter := " "

oCol:nDataStrAlign := AL_LEFT

oCol:nHeadStrAlign := AL_LEFT

oCol:bLClickHeader := {|r,c,f,o| ( T_CAMPO_ORDENAR:='DATA_VALE_VENDEDOR', ORDENA_VALES_VENDEDOR() )}

oCol:cSortOrder := 'DATA_VALE_VENDEDOR'

*----------------------------------------------------------------------------

oCol := oDB_VALES_VENDEDOR:AddCol()

oCol:bStrData := { || (vales_vendedor->OBSERVACAO) }

oCol:cHeader := "Observação"

oCol:cFooter := " "

oCol:nDataStrAlign := AL_LEFT

oCol:nHeadStrAlign := AL_LEFT

oCol:bLClickHeader := {|r,c,f,o| ( T_CAMPO_ORDENAR:='OBSERVACAO', ORDENA_VALES_VENDEDOR() )}

oCol:cSortOrder := 'OBSERVACAO'

*----------------------------------------------------------------------------

oCol := oDB_VALES_VENDEDOR:AddCol()

oCol:bStrData := { || TRANSFORM(vales_vendedor->VALOR_VALE_VENDEDOR,'@E 999,999,999.99') }

oCol:cHeader := "Valor"

oCol:cFooter := " "

oCol:nDataStrAlign := AL_RIGHT

oCol:nHeadStrAlign := AL_LEFT

oCol:bLClickHeader := {|r,c,f,o| ( T_CAMPO_ORDENAR:='VALOR_VALE_VENDEDOR', ORDENA_VALES_VENDEDOR() )}

oCol:cSortOrder := 'VALOR_VALE_VENDEDOR'

*----------------------------------------------------------------------------

oDB_VALES_VENDEDOR:CreateFromResource(4027)

*

*=================================================================================

/// Pesquisa no Banco de dados Dependedo da Chave escolhida

///=============================================================================

STATIC FUNCTION ORDENA_VALES_VENDEDOR()

IF cOrder = 'A'

cOrder := 'D'

ELSE

cOrder := 'A'

ENDIF

T_CAMPO_ORDENAR := 'DATA_VALE_VENDEDOR'

IF SELECT("vales_vendedor") != 0

vales_vendedor->(DbCloseArea())

ENDIF

cQuery:='select * from vales_vendedor '

cQuery := cQuery + ' ORDER BY ' + ALLTRIM(T_CAMPO_ORDENAR) + IF(cOrder='A',' DESC',' ASC')

use sql cQuery alias "vales_vendedor" new via 'MYSQL'

vales_vendedor->( DbGoTop())

oDB_VALES_VENDEDOR: GoTop()

oDB_VALES_VENDEDOR: Refresh()

Return(.t.)

id=code>id=code>

vejam o Resultado.

Posso ordenar por quaquer campo da tabela e pesuisar por qualquer campo que ele esteja ordenado...

vejam a imagem abaixo

exemplol.jpg

outro exemplo

exemplo2s.jpg

informaisvrb@gmail.com

FWHX 2.6+ SQLLIB + xDev + rpv + MYSQL 5.0 / fwh808+sqllib(atual)

Msn.: mastermarvrb@msn.com

Link to comment
Share on other sites

E mais uma dica, para utilizar a pesquisa incremental sem deixar muito lento, você pode colocar no final de seu select um LIMIT 100, por exemplo.

Desta forma, se você pesquisar por algo que retornaria 5000 registros e levaria um certo tempo, ele vai retornar apenas 100 registros e agilizar o processo.

E essa ideia do Marcio de ordenar por um campo e filtrar por ele é muito boa. Eu não uso xBrowse e uma vez alterei a classe WBrowse para fazer isso. =) (mas no final acabei nem usando)

Luis Fernando Jr. (Luisão)

Leme/SP

--

FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY + [Ghost/Java]Script

E-Mail: juninho.luisao@gmail.com

MSN: juninho_luisao@hotmail.com

Skype: luis.fernando.jr

Link to comment
Share on other sites

Bom Dia a todos..

Veja o que aconteceu ao clicar no botão "buscar"

query001.png

O inicio do PRG tá assim;


USE "CADCLI" as "Select * from CADCLI ORDER BY NOME_CLI" Alias "CADCLI" New Via "MySQL"

sqlexec("create index NOMECLIENTE on CADCLI (NOME_CLI)")

< "Aqui Crio o Browse" >

Redefine Button obtn prompt "Buscar" ID 4006 Of oDlg Action Busca(oBrw,cPegaNome)

id=code>id=code>

Na Proc de pesquisa tá assim ;


Procedure Busca(oBrw,cPegaNome)

cQuery:='select * from CADCLI '

cQuery := cQuery + ' ORDER BY ' + ALLTRIM(NOME_CLI)

use sql cQuery alias "cQuery" new via 'MYSQL'

CADCLI->( DbGoTop())

oBRW[1]:GoTop()

oBrw[1]:Refresh()

Return(.t.)

id=code>id=code>

Onde tá errado..

6 vão ter um pouco de pacência comigo.. sempre iniciei alguma coisa em SQL mas nunca dei continuidade... agora vou ingressar de vez no mundo SQL..

e vou perturbar muito por aqui icon_smile_big.gif

Obrigado..

Retorne avisando se a dica funcionouid=red>

curruptos.png

Luiz Arruda

Corumbá - MS

ico.corumba@gmai.com

Link to comment
Share on other sites

O erro está aqui:

' ORDER BY ' + ALLTRIM(NOME_CLI)

Ao fazer isso, sua query está ficando Order By Luiz, por exemplo, mas Luiz é o valor de um campo e não o nome do campo.

O correto seria "...Where NOME_CLI LIKE '"+Alltrim(cPegaNome)+"%' Order By NOME_CLI"

E lembre-se de fazer o USE SQL novamente, mas dessa vez sem usar o NEW, pois você vai "atualizar" a área já aberta.

A parte onde está criando o indice não precisa mais, pois se ela já foi executada uma vez, já estará criado.

Luis Fernando Jr. (Luisão)

Leme/SP

--

FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY + [Ghost/Java]Script

E-Mail: juninho.luisao@gmail.com

MSN: juninho_luisao@hotmail.com

Skype: luis.fernando.jr

Link to comment
Share on other sites

Ah... os "..." é o seu Select.

Coloquei ... para digitar menos =)

Seria o select * from CADCLI

Luis Fernando Jr. (Luisão)

Leme/SP

--

FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY + [Ghost/Java]Script

E-Mail: juninho.luisao@gmail.com

MSN: juninho_luisao@hotmail.com

Skype: luis.fernando.jr

Link to comment
Share on other sites

Luisão.. Mesmo erro.. só que agora demora + um pouquinho pra aparecer.. como se tivesse processando alguma coisa...


cQuery:="select * from CADCLI Where NOME_CLI LIKE "+Alltrim(cPegaNome)+"%" Order By NOME_CLI"

use sql cQuery alias "cQuery" new via 'MYSQL'

CADCLI->( DbGoTop())

oBRW[1]:GoTop()

oBrw[1]:Refresh()

Return(.t.)

id=code>id=code>

Retorne avisando se a dica funcionouid=red>

curruptos.png

Luiz Arruda

Corumbá - MS

ico.corumba@gmai.com

Link to comment
Share on other sites

Joao e Luisão

agora fiz assim,


Procedure Busca(oBrw,cPegaNome)

/*

cQuery:='select * from CADCLI '

*/

cQuery:= "select * from CADCLI Where NOME_CLI LIKE '"+Alltrim(cPegaNome)+"%' Order By NOME_CLI"

use sql cQuery alias "cQuery" new via 'MYSQL'

CADCLI->( DbGoTop())

oBRW[1]:GoTop()

oBrw[1]:Refresh()

Return(.t.)

id=code>id=code>

O erro sumiu mas não faz busca nem uma e nem atualiza o Browse..

Se eu clico no botão novamente mostra esse erro ;


Error description: Error DBCMD/1011 Alias already in use: cQuery

id=code>id=code>

Como reabro o BD ao sair da consulta ??

Num repara não.. to mais perdido que cão caído de mudança...

Retorne avisando se a dica funcionouid=red>

curruptos.png

Luiz Arruda

Corumbá - MS

ico.corumba@gmai.com

Link to comment
Share on other sites

Eu tenho uma classe de pesquisa generica e incremental, vou criar um sample e tentar colocar em dicas...

Fw 2.6 | Clipper 5.3b | DBFCDX

--

FwxH 8.02 | xHb 1.1.0 | DBFCDX

--

FwxH 9.06 | xHb 1.2.1 | SqlLibid=brown>

O burro nunca aprende, o inteligente aprende com sua própria experiência, o sábio com a experiência dos outros.

Link to comment
Share on other sites

Postei no megaupload, estava dando erro em dicas, pode ser pelo tamanho do arquivo, 5MB

Bem, basta seguir o passo a passo abaixo para testar:


1 - Antes de executar o programa configure o arquivo CONNECT.INI

- Na variavel ADDRESS informe o ip do seu servidor MySql

- Configure as demais variaveis conforme necessário

2 - Execute o programa pelo DOS passando o parametro "RESTORE"

- G:\prog\FiveWin\Pesquisa MySql>Farma1.EXE restore

- Selecionar o arquivo.SQL que acompanha o programa

3 - Posteriormente execute o programa normalmente.

- Selecionar Cadastro de produtos > Botão pesquisar

id=code>id=code>

O arquivo pode ser baixado no seguinte link: http://www.megaupload.com/?d=E7E7ZEHS

Tem uma tela de cadastro de produtos com 27 mil registros e a pesquisa incremental está instantânea!

Fw 2.6 | Clipper 5.3b | DBFCDX

--

FwxH 8.02 | xHb 1.1.0 | DBFCDX

--

FwxH 9.06 | xHb 1.2.1 | SqlLibid=brown>

O burro nunca aprende, o inteligente aprende com sua própria experiência, o sábio com a experiência dos outros.

Link to comment
Share on other sites

citação:

megaupf.png

Puxa!!! eu só queria filtrar dados no Browse.. icon_smile_sad.gificon_smile_sad.gificon_smile_sad.gif

Tô paradão no tempo...

Eu amo DBF !!! icon_smile_big.gif

Retorne avisando se a dica funcionouid=red>

curruptos.png

Luiz Arruda

Corumbá - MS

ico.corumba@gmai.com


id=quote>id=quote>

Usa Skype ?

Fw 2.6 | Clipper 5.3b | DBFCDX

--

FwxH 8.02 | xHb 1.1.0 | DBFCDX

--

FwxH 9.06 | xHb 1.2.1 | SqlLib

id=brown>

O burro nunca aprende, o inteligente aprende com sua própria experiência, o sábio com a experiência dos outros.

Link to comment
Share on other sites

Ééééé´pessoal, Não dá mais o tempo tá acabando de novo...

ACHO QUE VOU ABANDONAR NOVENTE ESSE NEGOCIO DE SQLid=size5>pct01.gif

Abrigado a todos...

Até a próxima tentativa... pct01.gif

Uma simples filragem de nomes não deu em nada imagina mais pra frente... pct01.gif

Retorne avisando se a dica funcionouid=red>

curruptos.png

Luiz Arruda

Corumbá - MS

ico.corumba@gmai.com

Link to comment
Share on other sites

Luiz, fica frio.

Eu to meio enrolado, mas no final de semana posto alguma coisa nesse tópico para ajudar.

Mas não desanime não, "abrace" o futuro com MySQL, Skype, etc... =)

Luis Fernando Jr. (Luisão)

Leme/SP

--

FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY + [Ghost/Java]Script

E-Mail: juninho.luisao@gmail.com

MSN: juninho_luisao@hotmail.com

Skype: luis.fernando.jr

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...