Would we be able to just import the tables that have our help topics/filters/users into a new DB though? That way we don't need to match anything? This is just a backup solution I am trying to come up with if I can't resolve the issue.
Otherwise, further testing this morning is actually showing the long queries are still there. However, I'm not sure if this is our problem exactly because I am seeing the same long query on our production osticket instance and all of our tickets load fine there. One thing I did notice is that on the production instance (running 1.16) the long query only returns 1 row, vs the testing instance (running 1.18) returns 121740.
Production (1.16)
# Query_time: 3.703216 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 1224791
use osticket;
SELECT COUNT(DISTINCT CASE WHEN A2.`state` = 'open' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q1`, COUNT(DISTINCT CASE WHEN A2.`state` = 'open' AND A2.`state` = 'open' AND A1.`isanswered` = '0' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q2`, COUNT(DISTINCT CASE WHEN A1.`staff_id` IN (22) AND A2.`state` = 'open' AND A1.`staff_id` IN (22) AND A2.`state` = 'open' AND A1.`staff_id` IN (22) AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q6`, COUNT(DISTINCT CASE WHEN A2.`state` = 'closed' AND A2.`state` = 'closed' AND A1.`closed` BETWEEN '2025-10-31 00:00:00' AND '2025-10-31 23:59:59' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q9`, COUNT(DISTINCT CASE WHEN A2.`state` = 'open' AND A2.`state` = 'open' AND A1.`isanswered` = '1' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q3`, COUNT(DISTINCT CASE WHEN A1.`staff_id` IN (22) AND A2.`state` = 'open' AND A1.`staff_id` IN (22) AND A2.`state` = 'open' AND NOT A1.`staff_id` IN (22) AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q7`, COUNT(DISTINCT CASE WHEN A2.`state` = 'closed' AND A2.`state` = 'closed' AND A1.`closed` BETWEEN '2025-10-30 00:00:00' AND '2025-10-30 23:59:59' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q10`, COUNT(DISTINCT CASE WHEN A2.`state` = 'open' AND A2.`state` = 'open' AND A1.`isoverdue` = '1' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q4`, COUNT(DISTINCT CASE WHEN A1.`staff_id` IN (22) AND A2.`state` = 'open' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q5`, COUNT(DISTINCT CASE WHEN A2.`state` = 'closed' AND A2.`state` = 'closed' AND A1.`closed` BETWEEN '2025-10-27 00:00:00' AND '2025-11-02 23:59:59' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q11`, COUNT(DISTINCT CASE WHEN A2.`state` = 'closed' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q8`, COUNT(DISTINCT CASE WHEN A2.`state` = 'closed' AND A2.`state` = 'closed' AND A1.`closed` BETWEEN '2025-10-01 00:00:00' AND '2025-10-31 23:59:59' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q12`, COUNT(DISTINCT CASE WHEN A2.`state` = 'closed' AND A2.`state` = 'closed' AND A1.`closed` BETWEEN '2025-10-01 00:00:00' AND '2025-12-31 23:59:59' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q13`, COUNT(DISTINCT CASE WHEN A2.`state` = 'closed' AND A2.`state` = 'closed' AND A1.`closed` BETWEEN '2025-01-01 00:00:00' AND '2025-12-31 23:59:59' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q14` FROM `osticket_ticket` A1 JOIN `osticket_ticket_status` A2 ON (A1.`status_id` = A2.`id`) LEFT JOIN `osticket_thread` A3 ON (A3.`object_type` = 'T' AND A1.`ticket_id` = A3.`object_id`) LEFT JOIN `osticket_thread_referral` A4 ON (A3.`id` = A4.`thread_id`) LEFT JOIN `osticket_staff` A5 ON (A4.`object_type` = 'S' AND A4.`object_id` = A5.`staff_id`) LEFT JOIN `osticket_thread` A6 ON (A1.`ticket_id` = A6.`object_id` AND A6.`object_type` = 'C') LEFT JOIN `osticket_thread_referral` A7 ON (A6.`id` = A7.`thread_id`) LEFT JOIN `osticket_staff` A8 ON (A7.`object_type` = 'S' AND A7.`object_id` = A8.`staff_id`) LEFT JOIN `osticket_department` B0 ON (A4.`object_type` = 'D' AND A4.`object_id` = B0.`id`) LEFT JOIN `osticket_department` B1 ON (A7.`object_type` = 'D' AND A7.`object_id` = B1.`id`) WHERE ((A2.`state` = 'open' AND (A1.`staff_id` = 22 OR A5.`staff_id` = 22 OR A6.`object_type` = 'C' AND A8.`staff_id` = 22)) OR (A2.`state` IN ('open', 'closed') AND (A1.`dept_id` IN (1, 5, 7, 9, 10) OR B0.`id` IN (1, 5, 7, 9, 10))) OR A6.`object_type` = 'C' AND B1.`id` IN (1, 5, 7, 9, 10));
Testing (1.18)
# Query_time: 5.610017 Lock_time: 0.250024 Rows_sent: 121740 Rows_examined: 1467963
use osticket_test;
SELECT COUNT(DISTINCT CASE WHEN A2.`state` = 'open' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q1`, COUNT(DISTINCT CASE WHEN A2.`state` = 'open' AND A2.`state` = 'open' AND A1.`isanswered` = '0' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q2`, COUNT(DISTINCT CASE WHEN A1.`staff_id` IN (34) AND A2.`state` = 'open' AND A1.`staff_id` IN (34) AND A2.`state` = 'open' AND A1.`staff_id` IN (34) AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q6`, COUNT(DISTINCT CASE WHEN A2.`state` = 'closed' AND A2.`state` = 'closed' AND A1.`closed` BETWEEN '2025-10-31 00:00:00' AND '2025-10-31 23:59:59' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q9`, COUNT(DISTINCT CASE WHEN A2.`state` = 'open' AND A2.`state` = 'open' AND A1.`isanswered` = '1' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q3`, COUNT(DISTINCT CASE WHEN A1.`staff_id` IN (34) AND A2.`state` = 'open' AND A1.`staff_id` IN (34) AND A2.`state` = 'open' AND NOT A1.`staff_id` IN (34) AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q7`, COUNT(DISTINCT CASE WHEN A2.`state` = 'closed' AND A2.`state` = 'closed' AND A1.`closed` BETWEEN '2025-10-30 00:00:00' AND '2025-10-30 23:59:59' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q10`, COUNT(DISTINCT CASE WHEN A2.`state` = 'open' AND A2.`state` = 'open' AND A1.`isoverdue` = '1' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q4`, COUNT(DISTINCT CASE WHEN A1.`staff_id` IN (34) AND A2.`state` = 'open' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q5`, COUNT(DISTINCT CASE WHEN A2.`state` = 'closed' AND A2.`state` = 'closed' AND A1.`closed` BETWEEN '2025-10-27 00:00:00' AND '2025-11-02 23:59:59' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q11`, COUNT(DISTINCT CASE WHEN A2.`state` = 'closed' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q8`, COUNT(DISTINCT CASE WHEN A2.`state` = 'closed' AND A2.`state` = 'closed' AND A1.`closed` BETWEEN '2025-10-01 00:00:00' AND '2025-10-31 23:59:59' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q12`, COUNT(DISTINCT CASE WHEN A2.`state` = 'closed' AND A2.`state` = 'closed' AND A1.`closed` BETWEEN '2025-10-01 00:00:00' AND '2025-12-31 23:59:59' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q13`, COUNT(DISTINCT CASE WHEN A2.`state` = 'closed' AND A2.`state` = 'closed' AND A1.`closed` BETWEEN '2025-01-01 00:00:00' AND '2025-12-31 23:59:59' AND A3.`object_type` = 'T' THEN A1.`ticket_id` END) AS `q14` FROM `osticket_ticket` A1 JOIN `osticket_ticket_status` A2 ON (A1.`status_id` = A2.`id`) LEFT JOIN `osticket_thread` A3 ON (A3.`object_type` = 'T' AND A1.`ticket_id` = A3.`object_id`) LEFT JOIN `osticket_thread_referral` A4 ON (A3.`id` = A4.`thread_id`) LEFT JOIN `osticket_staff` A5 ON (A4.`object_type` = 'S' AND A4.`object_id` = A5.`staff_id`) LEFT JOIN `osticket_thread` A6 ON (A1.`ticket_id` = A6.`object_id` AND A6.`object_type` = 'C') LEFT JOIN `osticket_thread_referral` A7 ON (A6.`id` = A7.`thread_id`) LEFT JOIN `osticket_staff` A8 ON (A7.`object_type` = 'S' AND A7.`object_id` = A8.`staff_id`) LEFT JOIN `osticket_department` B0 ON (A4.`object_type` = 'D' AND A4.`object_id` = B0.`id`) LEFT JOIN `osticket_department` B1 ON (A7.`object_type` = 'D' AND A7.`object_id` = B1.`id`) WHERE ((A2.`state` IN ('open', 'closed') AND (A1.`staff_id` = 34 OR A5.`staff_id` = 34 OR A6.`object_type` = 'C' AND A8.`staff_id` = 34)) OR (A2.`state` IN ('open', 'closed') AND (A1.`dept_id` IN (1, 9, 10) OR B0.`id` IN (1, 9, 10))) OR A6.`object_type` = 'C' AND B1.`id` IN (1, 9, 10)) GROUP BY A1.`ticket_id`;