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:
CREATE INDEX company_idx_id ON "company" ("id");
CREATE INDEX fos_user_idx_deleted_id ON "fos_user" ("deleted","id");
CREATE INDEX invoice_idx_deleted_id ON "invoice" ("deleted","id");
CREATE INDEX invoice_status_idx_deleted_id ON "invoice_status" ("deleted","id");
CREATE INDEX opportunity_idx_id ON "opportunity" ("id");
CREATE INDEX priority_idx_deleted_id ON "priority" ("deleted","id");
CREATE INDEX slip_idx_deleted_task_id ON "slip" ("deleted","task_id");
CREATE INDEX task_idx_deleted_status_id ON "task" ("deleted","status_id");
CREATE INDEX task_status_idx_deleted_id ON "task_status" ("deleted","id");
SELECT
DISTINCT task.id AS id0,
task.rate AS rate1,
task.revised_rate AS revised_rate2,
task.title AS title3,
task.points AS points4,
task.due AS due5,
task.created AS created6,
invoice.id AS id7,
invoice.title AS title8,
company.id AS id9,
company.customer_code AS customer_code10,
taskStatus.id AS id11,
taskStatus.title AS title12,
priority.id AS id13,
taskUser.id AS id14,
taskUser.firstname AS firstname15,
taskUser.lastname AS lastname16,
invoiceUser.id AS id17,
invoiceUser.firstname AS firstname18,
invoiceUser.lastname AS lastname19,
invoiceStatus.id AS id20,
invoiceStatus.title AS title21,
opportunity.id AS id22,
opportunity.name AS name23,
SUM(slip.stop - slip.start) AS sclr24,
task.projected_minutes AS projected_minutes25
FROM
task task
INNER JOIN
invoice invoice
ON task.invoice_id = invoice.id
AND (
invoice.deleted IS NULL
)
INNER JOIN
company company
ON invoice.company_id = company.id
INNER JOIN
task_status taskStatus
ON task.status_id = taskStatus.id
AND (
taskStatus.deleted IS NULL
)
LEFT JOIN
slip slip
ON task.id = slip.task_id
AND (
slip.deleted IS NULL
)
LEFT JOIN
fos_user taskUser
ON task.user_id = taskUser.id
AND (
taskUser.deleted IS NULL
)
LEFT JOIN
priority priority
ON task.priority_id = priority.id
AND (
priority.deleted IS NULL
)
LEFT JOIN
fos_user invoiceUser
ON invoice.user_id = invoiceUser.id
AND (
invoiceUser.deleted IS NULL
)
LEFT JOIN
invoice_status invoiceStatus
ON invoice.status_id = invoiceStatus.id
AND (
invoiceStatus.deleted IS NULL
)
LEFT JOIN
opportunity opportunity
ON invoice.opportunity_id = opportunity.id
INNER JOIN
fos_user slipUser
ON slip.user_id = slipUser.id
AND (
slipUser.deleted IS NULL
)
WHERE
(
taskStatus.id IN (
3
)
AND slipUser.id IN (
605
)
)
AND (
task.deleted IS NULL
)
GROUP BY
task.id,
company.id,
taskUser.id,
taskStatus.id,
invoice.id,
invoiceUser.id,
invoiceStatus.id,
opportunity.id,
priority.id
ORDER BY
priority.id ASC,
task.due ASC,
company.customer_code ASC,
taskUser.firstname ASC,
taskUser.lastname ASC,
task.points ASC,
task.title ASC,
taskStatus.title ASC,
task.created ASC,
invoice.title ASC,
invoiceUser.firstname ASC,
invoiceUser.lastname ASC,
invoiceStatus.title ASC,
opportunity.name ASC LIMIT 50 OFFSET 0