Nous testons Apache Impala et nous avons remarqué qu'utiliser GROUP BY et LIKE ensemble fonctionne très lentement - les requêtes séparées fonctionnent beaucoup plus rapidement. Voici deux exemples:Lenteur des performances sur la requête Impala en utilisant Group By et Like
# 1.37s 1.08s 1.35s
SELECT * FROM hive.default.pcopy1B where
(lower("by") like '%part%' and lower("by") like '%and%' and lower("by") like '%the%')
or (lower(title) like '%part%' and lower(title) like '%and%' and lower(title) like '%the%')
or (lower(url) like '%part%' and lower(url) like '%and%' and lower(url) like '%the%')
or (lower(text) like '%part%' and lower(text) like '%and%' and lower(text) like '%the%')
limit 100;
# 156.64s 155.63s
select "by", type, ranking, count(*) from pcopy where
(lower("by") like '%part%' and lower("by") like '%and%' and lower("by") like '%the%')
or (lower(title) like '%part%' and lower(title) like '%and%' and lower(title) like '%the%')
or (lower(url) like '%part%' and lower(url) like '%and%' and lower(url) like '%the%')
or (lower(text) like '%part%' and lower(text) like '%and%' and lower(text) like '%the%')
group by "by", type, ranking
order by 4 desc limit 10;
Quelqu'un pourrait-il s'il vous plaît expliquer pourquoi ce problème se produit, et s'il y a des solutions de contournement?
Les deux requêtes me semblent très différentes. Le premier sélectionne simplement les enregistrements et n'a besoin que d'un curseur, le second doit récupérer tous les enregistrements et exécuter à la fois un groupe et un tri. S'il y a beaucoup d'enregistrements renvoyés, cela peut expliquer la différence de temps. Ou ai-je oublié quelque chose? – LSerni