Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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!
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
>
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
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.
é 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
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
Nessa tabela há índices? Mostre a saída de um EXPLAIN desta query para nós.