In case you have your own slow SQL query, you can optimize it automatically here.
For the query above, the following recommendations will be helpful as part of the SQL tuning process.
You'll find 3 sections below:
ALTER TABLE `accounts` ADD INDEX `accounts_idx_type_account_id` (`type`,`account_type_id`);
ALTER TABLE `accounts` ADD INDEX `accounts_idx_account_id_type` (`account_type_id`,`type`);
SELECT
*
FROM
accounts
WHERE
NOT EXISTS (
SELECT
1
FROM
((SELECT
accounts.id
FROM
accounts
WHERE
accounts.account_type_id IN (
1, 2
)
AND accounts.`type` = 'single'
ORDER BY
RAND() LIMIT 5)
UNION
(
SELECT
accounts.id
FROM
accounts
WHERE
accounts.account_type_id IN (
1, 2
)
AND accounts.`type` = 'joint'
ORDER BY
RAND() LIMIT 5
)
UNION
(
SELECT
accounts.id
FROM
accounts
WHERE
accounts.account_type_id = 3
AND accounts.`type` = 'single'
ORDER BY
RAND() LIMIT 5
)
UNION
(
SELECT
accounts.id
FROM
accounts
WHERE
accounts.account_type_id = 3
AND accounts.`type` = 'joint'
ORDER BY
RAND() LIMIT 5
)
) a
WHERE
(
accounts.id = a.id
)
)