Hello I’m trying to understand why the search bar is slow for regular user (around ~30s and more). I end up with this SQL snippet that is part of the search query (api/search)
SELECT
`mt`.`id`
FROM
`metabase_table` AS `mt`
WHERE
EXISTS (
SELECT
1
FROM
`data_permissions` AS `dp`
WHERE
(
`dp`.`perm_type` = 'perms/view-data'
)
AND (
(
(`mt`.`db_id` = `dp`.`db_id`)
AND (`dp`.`table_id` IS NULL)
)
OR (`mt`.`id` = `dp`.`table_id`)
)
AND EXISTS (
SELECT
1
FROM
`permissions_group` AS `pg`
WHERE
(`pg`.`id` = `dp`.`group_id`)
AND EXISTS (
SELECT
1
FROM
`permissions_group_membership` AS `pgm`
WHERE
(`pgm`.`group_id` = `pg`.`id`)
AND (`pgm`.`user_id` = 13372210)
)
)
GROUP BY
`mt`.`id`
HAVING
(
CASE WHEN MIN(
CASE WHEN `dp`.`perm_value` = 'unrestricted' THEN 0 WHEN `dp`.`perm_value` = 'blocked' THEN 1 WHEN `dp`.`perm_value` = 'legacy-no-self-service' THEN 2 END
) = 0 THEN 0 WHEN MIN(
CASE WHEN `dp`.`perm_value` = 'unrestricted' THEN 0 WHEN `dp`.`perm_value` = 'blocked' THEN 1 WHEN `dp`.`perm_value` = 'legacy-no-self-service' THEN 2 END
) = 1 THEN 2 WHEN MIN(
CASE WHEN `dp`.`perm_value` = 'unrestricted' THEN 0 WHEN `dp`.`perm_value` = 'blocked' THEN 1 WHEN `dp`.`perm_value` = 'legacy-no-self-service' THEN 2 END
) = 2 THEN 1 END <= 0
)
)
AND EXISTS (
SELECT
1
FROM
`data_permissions` AS `dp`
WHERE
(
`dp`.`perm_type` = 'perms/create-queries'
)
AND (
(
(`mt`.`db_id` = `dp`.`db_id`)
AND (`dp`.`table_id` IS NULL)
)
OR (`mt`.`id` = `dp`.`table_id`)
)
AND EXISTS (
SELECT
1
FROM
`permissions_group` AS `pg`
WHERE
(`pg`.`id` = `dp`.`group_id`)
AND EXISTS (
SELECT
1
FROM
`permissions_group_membership` AS `pgm`
WHERE
(`pgm`.`group_id` = `pg`.`id`)
AND (`pgm`.`user_id` = 13372210)
)
)
GROUP BY
`mt`.`id`
HAVING
(
MIN(
CASE WHEN `dp`.`perm_value` = 'query-builder-and-native' THEN 0 WHEN `dp`.`perm_value` = 'query-builder' THEN 1 WHEN `dp`.`perm_value` = 'no' THEN 2 END
) <= 1
)
)
Metabase version: v0.56/v0.55
SQL Engine: mariadb: 11.4
EXPLAIN seems not to show a missing index…
Do you have any hint ? (is it a limitation of metabase versus the number of tables ~50.000 in our case…)
Many thanks for your inputs !
Regards
