Я столкнулся с проблемой производительности при выполнении SQL-запроса, использующего базу данных MyISAM.
Вкратце, у меня есть 3 таблицы:
Таблица: A (Двигатель MyISAM. Всего записей: 1847)
Таблица: B (Двигатель MyISAM. Всего записей: 1110)
Таблица: C (Двигатель MyISAM. Всего записей: 1110)
Таблица: C (Двигатель MyISAM. Всего записей: 1847) MyISAM. Всего записей: 57867)
Теперь запрос, который я запускаю, занимает 623 секунды, и иногда случается, что соединение с сервером (то же самое в случае с локальным хостом) прерывается.
Ниже приведен запрос, который я выполняю:
SELECT MATCH(A.title, A.description) AGAINST('Computer Graphic Artist') AS 'Score',
A.code AS 'Code',
B.cluster AS 'Cluster',
B.pathway AS 'Pathway',
A.title AS 'Role',
A.description AS 'Description'
FROM B
INNER JOIN A ON B.code = A.code
INNER JOIN C ON B.code = C.code
WHERE MATCH(A.title, A.description) AGAINST('Computer Graphic Artist')
OR MATCH(B.cluster, B.pathway, B.descripton) AGAINST('Computer Graphic Artist')
OR MATCH(C.title) AGAINST('Computer Graphic Artist')
ORDER BY Score DESC, B.cluster ASC
Вы также можете обратиться к Pastie (если вы не видите этот SQL). Я добавил свойство FULLTEXT везде, где это применимо.
ПРИМЕЧАНИЕ. В таблицах A, B и C также есть несколько повторяющихся записей.
Пожалуйста, дайте мне знать, как я могу оптимизировать этот SQL для быстрого вывода.