|
TESTED WITH 10.0.1 AND 10.0.3
running a query using IN () take a table scan
while using OR = OR = OR = .... use index
the problem in this case that's the "nf_serie" column don't have a value of "ecf1", in this case this query will return "always false"
the table is optimized via OPTIMIZE TABLE
i will append table definitions and query next:
explain extended query:
select `19_org`.`nf_arquivo_nfe`.`emitente_tipo` AS `emitente_tipo`,`19_org`.`nf_arquivo_nfe`.`emitente_id` AS `emitente_id`,`19_org`.`nf_arquivo_nfe`.`emitente_propriedade` AS `emitente_propriedade`,`19_org`.`nf_arquivo_nfe`.`nf` AS `nf`,`19_org`.`nf_arquivo_nfe`.`nf_serie` AS `nf_serie`,`19_org`.`nf_arquivo_nfe`.`arquivo` AS `arquivo`,`19_org`.`nf_arquivo_nfe`.`nome_arquivo` AS `nome_arquivo`
|
from `19_org`.`nf_arquivo_nfe`
|
where
|
((`19_org`.`nf_arquivo_nfe`.`emitente_tipo`,`19_org`.`nf_arquivo_nfe`.`emitente_id`,`19_org`.`nf_arquivo_nfe`.`emitente_propriedade`,`19_org`.`nf_arquivo_nfe`.`nf_serie`,`19_org`.`nf_arquivo_nfe`.`nf`) in
|
(<cache>(('j','1','0','ecf1','-2')),<cache>(('j','1','0','ecf1','-1'))))
|
explain
|
select emitente_tipo, emitente_id, emitente_propriedade, nf, nf_serie,arquivo,nome_arquivo
|
from nf_arquivo_nfe
|
WHERE
|
(emitente_tipo, emitente_id, emitente_propriedade, nf_serie, nf) IN
|
(('j','1','0','ecf1',"-2"),('j','1','0','ecf1',"-1"))
|
| id |
select_type |
table |
type |
possible_keys |
key |
key_len |
ref |
rows |
Extra |
| 1 |
SIMPLE |
nf_arquivo_nfe |
ALL |
|
|
|
|
633786 |
Using where |
—
"optimized" version
explain extended query:
select `19_org`.`nf_arquivo_nfe`.`emitente_tipo` AS `emitente_tipo`,`19_org`.`nf_arquivo_nfe`.`emitente_id` AS `emitente_id`,`19_org`.`nf_arquivo_nfe`.`emitente_propriedade` AS `emitente_propriedade`,`19_org`.`nf_arquivo_nfe`.`nf` AS `nf`,`19_org`.`nf_arquivo_nfe`.`nf_serie` AS `nf_serie`,`19_org`.`nf_arquivo_nfe`.`arquivo` AS `arquivo`,`19_org`.`nf_arquivo_nfe`.`nome_arquivo` AS `nome_arquivo`
|
from `19_org`.`nf_arquivo_nfe`
|
where
|
(
|
(
|
(`19_org`.`nf_arquivo_nfe`.`nf_serie` = 'ecf1') and
|
(`19_org`.`nf_arquivo_nfe`.`emitente_tipo` = 'j') and
|
(`19_org`.`nf_arquivo_nfe`.`emitente_id` = '1') and
|
(`19_org`.`nf_arquivo_nfe`.`emitente_propriedade` = '0') and
|
(`19_org`.`nf_arquivo_nfe`.`nf` = '-2')
|
) or (
|
(`19_org`.`nf_arquivo_nfe`.`nf_serie` = 'ecf1') and
|
(`19_org`.`nf_arquivo_nfe`.`emitente_tipo` = 'j') and
|
(`19_org`.`nf_arquivo_nfe`.`emitente_id` = '1') and
|
(`19_org`.`nf_arquivo_nfe`.`emitente_propriedade` = '0') and
|
(`19_org`.`nf_arquivo_nfe`.`nf` = '-1')
|
)
|
)
|
explain
|
select emitente_tipo, emitente_id, emitente_propriedade, nf, nf_serie,arquivo,nome_arquivo
|
from nf_arquivo_nfe
|
WHERE
|
(emitente_tipo, emitente_id, emitente_propriedade, nf_serie, nf)=
|
('j','1','0','ecf1',"-2") OR
|
(emitente_tipo, emitente_id, emitente_propriedade, nf_serie, nf)=
|
('j','1','0','ecf1',"-1")
|
| id |
select_type |
table |
type |
possible_keys |
key |
key_len |
ref |
rows |
Extra |
| 1 |
SIMPLE |
nf_arquivo_nfe |
ref |
PRIMARY |
PRIMARY |
14 |
const,const,const,const |
1 |
Using index condition; Using where |
create table:
CREATE TABLE `nf_arquivo_nfe` (
|
`emitente_tipo` enum('f','j') NOT NULL DEFAULT 'f',
|
`emitente_id` int(10) unsigned NOT NULL DEFAULT '0',
|
`emitente_propriedade` int(10) unsigned NOT NULL DEFAULT '0',
|
`nf_serie` char(5) NOT NULL DEFAULT '',
|
`nf` bigint(20) unsigned NOT NULL DEFAULT '0',
|
`id_arquivo` int(10) unsigned NOT NULL DEFAULT '0',
|
`tipo_arquivo` varchar(50) NOT NULL,
|
`mime_arquivo` varchar(255) NOT NULL DEFAULT '',
|
`nome_arquivo` varchar(255) NOT NULL,
|
`arquivo` longblob NOT NULL,
|
`data_arquivo` double unsigned NOT NULL DEFAULT '0',
|
`usuario` varchar(50) NOT NULL DEFAULT '',
|
`md5_arquivo` varchar(50) NOT NULL,
|
`tipo_ambiente` tinyint(3) unsigned NOT NULL DEFAULT '0',
|
`tamanho_arquivo` bigint(20) unsigned NOT NULL DEFAULT '0',
|
PRIMARY KEY (`emitente_tipo`,`emitente_id`,`emitente_propriedade`,`nf_serie`,`nf`,`id_arquivo`)
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
table informations:
select emitente_tipo,emitente_id,emitente_propriedade,nf_serie,count(*)
|
from nf_arquivo_nfe
|
group by emitente_tipo,emitente_id,emitente_propriedade,nf_serie
|
| emitente_tipo |
emitente_id |
emitente_propriedade |
nf_serie |
count(*) |
| |
0 |
0 |
|
715 |
| j |
1 |
0 |
1a |
21 |
| j |
1 |
0 |
1nf |
57831 |
| j |
1 |
0 |
1nf2 |
244437 |
| j |
1 |
0 |
1nfe |
144572 |
| j |
1 |
0 |
2nfe |
26884 |
| j |
1 |
0 |
3nfe |
158280 |
| j |
1 |
0 |
4nfe |
1044 |
| j |
111091 |
0 |
1 |
1 |
| j |
111130 |
0 |
1 |
1 |
|