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 `Cadastros` ADD INDEX `cadastros_idx_id` (`id`);
ALTER TABLE `Convenios` ADD INDEX `convenios_idx_id` (`id`);
ALTER TABLE `Especialidades` ADD INDEX `especialidades_idx_id` (`id`);
ALTER TABLE `Facilidades` ADD INDEX `facilidades_idx_id` (`id`);
ALTER TABLE `cadastros_convenios` ADD INDEX `cadastros_convenio_idx_cadastro_id` (`cadastro_id`);
ALTER TABLE `cadastros_especialidades` ADD INDEX `cadastros_especial_idx_cadastro_id` (`cadastro_id`);
ALTER TABLE `cadastros_facilidades` ADD INDEX `cadastros_facilida_idx_cadastro_id` (`cadastro_id`);
SELECT
Cadastro.*,
Convenio.*
FROM
Cadastros AS Cadastro
INNER JOIN
cadastros_convenios AS CadastrosConvenio
ON (
Cadastro.id = CadastrosConvenio.cadastro_id
)
INNER JOIN
Convenios AS Convenio
ON (
CadastrosConvenio.convenio_id = Convenio.id
AND Convenio.id IN (
2,
3))
INNER JOIN
cadastros_especialidades AS CadastrosEspecialidade
ON (
Cadastro.id = CadastrosEspecialidade.cadastro_id
)
INNER JOIN
Especialidades AS Especialidade
ON (
CadastrosEspecialidade.especialidade_id = Especialidade.id
AND Especialidade.id IN (
1
)
)
INNER JOIN
cadastros_facilidades AS CadastrosFacilidade
ON (
Cadastro.id = CadastrosFacilidade.cadastro_id
)
INNER JOIN
Facilidades AS Facilidade
ON (
CadastrosFacilidade.facilidade_id = Facilidade.id
AND Facilidade.id IN (
1,
2))
GROUP BY
Cadastro.id
HAVING
COUNT(*) = 5
ORDER BY
NULL