ursolouco 0 Denunciar post Postado Outubro 19, 2007 Salve, Há como otimizar ou deixar mais agil esta consulta ? SELECT clientes.cliente_parceiro_id, clientes.cliente_email, clientes.cliente_senha, clientes.cliente_nome, clientes.cliente_sobrenome, login.login_usuario, login.login_senha, login.login_user_code FROM clientes LEFT JOIN login ON login.login_cliente_id = clientes.cliente_id WHERE clientes.cliente_email LIKE '%$palavra%' AND clientes.cliente_parceiro_id = '$pid' AND NOT ISNULL(login.login_usuario) OR clientes.cliente_nome LIKE '%$palavra%' AND clientes.cliente_parceiro_id = '$pid' AND NOT ISNULL(login.login_usuario) OR clientes.cliente_sobrenome LIKE '%$palavra%' AND clientes.cliente_parceiro_id = '$pid' AND NOT ISNULL(login.login_usuario) OR login.login_usuario LIKE '%$palavra%' AND clientes.cliente_parceiro_id = '$pid' AND NOT ISNULL(login.login_usuario) OR login.login_senha LIKE '%$palavra%' AND clientes.cliente_parceiro_id = '$pid' AND NOT ISNULL(login.login_usuario) OR login.login_user_code LIKE '%$palavra%' AND clientes.cliente_parceiro_id = '$pid' AND NOT ISNULL(login.login_usuario) GROUP BY clientes.cliente_id ORDER BY clientes.cliente_nome ASC; Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Outubro 19, 2007 Nessa tabela há índices? Mostre a saída de um EXPLAIN desta query para nós. Compartilhar este post Link para o post Compartilhar em outros sites
ursolouco 0 Denunciar post Postado Outubro 22, 2007 Nessa tabela há índices? Mostre a saída de um EXPLAIN desta query para nós.Salve,Vamos lá! Espero que apareça formatado aqui no fórum:Tabela login:mysql> explain login;+-------------------+-----------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------------------+-----------------------+------+-----+---------+----------------+| login_id | smallint(11) unsigned | | PRI | NULL | auto_increment || login_usuario | varchar(100) | YES | | NULL | || login_senha | varchar(100) | YES | | NULL | || login_cliente_id | smallint(11) unsigned | YES | | NULL | || login_agente_id | smallint(11) unsigned | YES | | NULL | || login_parceiro_id | smallint(11) unsigned | YES | | NULL | || login_pedido_id | smallint(11) unsigned | YES | | NULL | || login_user_code | varchar(50) | YES | | NULL | |+-------------------+-----------------------+------+-----+---------+----------------+8 rows in set (0.00 sec)Tabela clientes:mysql> explain clientes;+-------------------------+-----------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------------------------+-----------------------+------+-----+---------+----------------+| cliente_id | smallint(11) unsigned | | PRI | NULL | auto_increment || cliente_parceiro_id | smallint(11) unsigned | | MUL | 0 | || cliente_tipo_id | smallint(11) unsigned | | MUL | 0 | || cliente_nome | varchar(100) | YES | | NULL | || cliente_sobrenome | varchar(100) | YES | | NULL | || cliente_rg | varchar(20) | YES | | NULL | || cliente_cpf_cnpj | varchar(20) | YES | MUL | NULL | || cliente_endereco | varchar(255) | YES | | NULL | || cliente_endereco_numero | smallint(5) unsigned | YES | | NULL | || cliente_complemento | varchar(255) | YES | | NULL | || cliente_bairro | varchar(255) | YES | | NULL | || cliente_cep | varchar(20) | YES | | NULL | || cliente_cidade | varchar(255) | YES | | NULL | || cliente_estado_id | smallint(11) unsigned | YES | | NULL | || cliente_email | varchar(255) | YES | | NULL | || cliente_senha | varchar(255) | YES | | NULL | || cliente_telefone | varchar(20) | YES | | NULL | || cliente_celular | varchar(20) | YES | | NULL | || cliente_comercial | varchar(20) | YES | | NULL | || cliente_fax | varchar(20) | YES | | NULL | || cliente_agente_id | smallint(11) unsigned | YES | | NULL | || cliente_email_opcional | varchar(255) | YES | | NULL | || cliente_hash | varchar(255) | YES | | NULL | |+-------------------------+-----------------------+------+-----+---------+----------------+23 rows in set (0.06 sec)Abraços! Compartilhar este post Link para o post Compartilhar em outros sites
Wagner Bianchi 0 Denunciar post Postado Outubro 22, 2007 Opa, O EXPLAIN que pedimos para analisar sua consulta não é uma explanação da tabela e sim um EXPLAIN <query>...assim poderemos ver qual é o posicionamento do SGBD que ele recebe sua query, se ele está fazendo FULL-SCAN ou utilizando algum índice. Abração!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
ursolouco 0 Denunciar post Postado Outubro 22, 2007 Opa, O EXPLAIN que pedimos para analisar sua consulta não é uma explanação da tabela e sim um EXPLAIN <query>...assim poderemos ver qual é o posicionamento do SGBD que ele recebe sua query, se ele está fazendo FULL-SCAN ou utilizando algum índice. Abração!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Salve, http://forum.imasters.com.br/public/style_emoticons/default/upset.gif Desculpe-me pela cabaçada! Seria isso aqui o que o Eclesiastes pediu ? +----+-------------+----------+------+-------------------+-------------------+---------+-------+------+----------------------------------------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+----------+------+-------------------+-------------------+---------+-------+------+----------------------------------------------+| 1 | SIMPLE | clientes | ref | clientes_FKIndex4 | clientes_FKIndex4 | 2 | const | 2 | Using where; Using temporary; Using filesort || 1 | SIMPLE | login | ALL | NULL | NULL | NULL | NULL | 66 | Using where |+----+-------------+----------+------+-------------------+-------------------+---------+-------+------+----------------------------------------------+2 rows in set (0.05 sec)Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Outubro 24, 2007 Ao meu ver, você trocando LEFT para INNER você poderia remover os 'NOT ISNULL(...)' das condições que daria no mesmo.Para a questão de índice fica complicado, já que você usa o LIKE com prefixo variável. Compartilhar este post Link para o post Compartilhar em outros sites
Wagner Bianchi 0 Denunciar post Postado Outubro 25, 2007 é o que eu esperava mesmo. . .juntando o que o Eclesiastes já postou com o resultado do EXPLIAN da sua conulta, confirmamos que nenhum índice de sua tabela está sendo usado, está sendo feito um FULL SCAN na tabela...sendo assim, somente depois de ler toda a tabela, o conjunto de dados e filtrado e entregue à saída padrão. Ficou complicado ajudar pois estamos fora do ambiente e não sabemos como está memória, índices... Deus abençõe!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
ursolouco 0 Denunciar post Postado Outubro 26, 2007 Salve galera!!Valeu pela força... vou deixar desta forma mesmo só alterando mesmo o JOIN como o Eclesiastes ;) falou.Muito obrigado mesmo!Abraço[]s Compartilhar este post Link para o post Compartilhar em outros sites