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_deleted_id` (`deleted`,`id`);
ALTER TABLE `cases` ADD INDEX `cases_idx_deleted_date_entered` (`deleted`,`date_entered`);
ALTER TABLE `cases` ADD INDEX `cases_idx_date_entered` (`date_entered`);
ALTER TABLE `users` ADD INDEX `users_idx_deleted_id` (`deleted`,`id`);
SELECT
cases_id,
cases_cstm_assunto_c,
cases_name,
cases_case_number,
cases_priority,
account_name,
account_name_owner,
account_name_mod,
cases_account_id,
assigned_user_name,
assigned_user_name_owner,
assigned_user_name_mod,
cases_status,
cases_date_entered,
cases_assigned_user_id
FROM
((SELECT
cases_id AS cases_id,
cases_cstm.assunto_c AS cases_cstm_assunto_c,
cases_name AS cases_name,
cases_case_number AS cases_case_number,
cases_priority AS cases_priority,
accounts.name account_name,
accounts.assigned_user_id account_name_owner,
'Accounts' account_name_mod,
cases_account_id AS cases_account_id,
LTRIM(RTRIM(CONCAT(IFNULL(jt1.first_name,
''),
' ',
IFNULL(jt1.last_name,
'')))) assigned_user_name,
jt1.created_by assigned_user_name_owner,
'Users' assigned_user_name_mod,
cases_status AS cases_status,
cases_date_entered AS cases_date_entered,
cases_assigned_user_id AS cases_assigned_user_id
FROM
(SELECT
cases.id AS cases_id,
cases.name AS cases_name,
cases.case_number AS cases_case_number,
cases.priority AS cases_priority,
cases.account_id AS cases_account_id,
cases.status AS cases_status,
cases.date_entered AS cases_date_entered,
cases.assigned_user_id AS cases_assigned_user_id
FROM
cases
WHERE
cases.deleted = 0
ORDER BY
cases.date_entered DESC LIMIT 11) AS cases
LEFT JOIN
cases_cstm
ON cases.cases_id = cases_cstm.id_c
LEFT JOIN
accounts accounts
ON cases.cases_account_id = accounts.id
AND accounts.deleted = 0
AND accounts.deleted = 0
LEFT JOIN
users jt1
ON cases.cases_assigned_user_id = jt1.id
AND jt1.deleted = 0
AND jt1.deleted = 0
WHERE
(
(
(
LTRIM(RTRIM(CONCAT(IFNULL(accounts.name, '')))) LIKE 'rodrigo fernando%'
)
)
)
AND 1 = 1 LIMIT 11
)
UNION
DISTINCT (SELECT
cases_id AS cases_id,
cases_cstm.assunto_c AS cases_cstm_assunto_c,
cases_name AS cases_name,
cases_case_number AS cases_case_number,
cases_priority AS cases_priority,
accounts.name account_name,
accounts.assigned_user_id account_name_owner,
'Accounts' account_name_mod,
cases_account_id AS cases_account_id,
LTRIM(RTRIM(CONCAT(IFNULL(jt1.first_name,
''),
' ',
IFNULL(jt1.last_name,
'')))) assigned_user_name,
jt1.created_by assigned_user_name_owner,
'Users' assigned_user_name_mod,
cases_status AS cases_status,
cases_date_entered AS cases_date_entered,
cases_assigned_user_id AS cases_assigned_user_id
FROM
(SELECT
cases.id AS cases_id,
cases.name AS cases_name,
cases.case_number AS cases_case_number,
cases.priority AS cases_priority,
cases.account_id AS cases_account_id,
cases.status AS cases_status,
cases.date_entered AS cases_date_entered,
cases.assigned_user_id AS cases_assigned_user_id
FROM
cases
WHERE
cases.deleted = 0
ORDER BY
cases.date_entered DESC LIMIT 11) AS cases
LEFT JOIN
cases_cstm
ON cases.cases_id = cases_cstm.id_c
LEFT JOIN
accounts accounts
ON cases.cases_account_id = accounts.id
AND accounts.deleted = 0
AND accounts.deleted = 0
LEFT JOIN
users jt1
ON cases.cases_assigned_user_id = jt1.id
AND jt1.deleted = 0
AND jt1.deleted = 0
WHERE
(((LTRIM(RTRIM(CONCAT(IFNULL(accounts.name, '')))) LIKE 'rodrigo fernando%')))
AND 1 = 1 LIMIT 11)
) AS union1
ORDER BY
union1.cases_date_entered DESC LIMIT 11