我有一个从数据库中选择任何信息的查询。我将使用此信息来定义商品价格。问题是查询需要 3 秒才能执行。对于许多文章来说,这个时间必须是乘数。
如何优化此查询?在 articoli 表中有 16 330 行。
这是查询
SELECT ts_scon, AI_CODICIVA,
AI_LIS_EURO1, AI_LIS_EURO2,
AI_LIS_EURO3, AI_LIS_EURO4,
AI_LIS_EURO5, cl_tipocl
FROM tabscon, articoli, clienti
WHERE ts_azienda = 'SRL'
AND AI_AZIENDA = 'SRL'
AND AI_CODIREST = $cod_articolo
AND cl_azienda = 'SRL'
AND cl_codice = $cod_cliente
AND ts_codice IN (
SELECT cl_tabsco
FROM clienti
WHERE cl_codice = $cod_cliente
AND CL_AZIENDA = 'SRL')
AND ts_grusco IN (
SELECT ai_grupscon
FROM articoli
WHERE ai_codirest = $cod_articolo
AND AI_AZIENDA = 'SRL')
这是 EXPLAIN 结果。结果与没有索引的索引相同。
id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra 1|PRIMARY|clienti|const|PRIMARY|PRIMARY|25|const,const|1
1|PRIMARY|tabscon|ref|PRIMARY,azie_grsco_codice| PRIMARY|15|const|505|使用 where 1|PRIMARY|articoli|ALL|PRIMARY,barcodeidx,StatoAidx,Statoidx|NULL|NULL|NULL|16333|使用 where; 使用连接缓冲区 3|DEPENDENT SUBQUERY|articoli|ref|PRIMARY,barcodeidx,StatoAidx,Statoidx StatoAidx|15|const|7311|使用 where 2|DEPENDENT|SUBQUERY|clienti|const|PRIMARY
抱歉,订单很少,但还不实用。