Estou tentando executar esta consulta:
SELECT id, duration, type, `from`, `to`, queue_name, created_at
FROM conference
WHERE duration >= 60
AND JSON_OVERLAPS('["6","7","8"]', `groups`)
No entanto, executá-lo consome bastante tempo. Aqui está o EXPLAIN
para essa consulta:
id: 1
select_type: SIMPLE
table: conference
partitions: NULL
type: ALL
possible_key: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 1994483
filtered: 33.33
Extra: Using where
A groups
coluna não está indexada, mas quando tento adicionar um índice com ALTER TABLE conference ADD INDEX
grupos (
groups );
recebo este erro:
Error Code: 3152. JSON column 'groups' supports indexing only via generated columns on a specified JSON path.
Posso adicionar uma coluna gerada, mas não sei que tipo de coluna gerada eu poderia criar que ainda me permitiria usar JSON_OVERLAPS
.
Alguma ideia?
Estou executando o MySQL 8.0.32.
Consulte índices multivalor no manual.
Saída: