Я пишу PHP-приложение, построенное на базе данных MySQL, созданное для 5-6 приложений, разделяющих его. Из-за этого я не могу изменить структуру базы данных, и я знаю, что многие из вас скажут сначала сделать это, но, к сожалению, я не могу.
Вот моя скрипка SQL схемы базы данных, запрос, который я использую, и желаемый результат:
http://sqlfiddle.com/#!2/de7493/1
Мое решение работает с этой базой данных, но с реальной производственной базой, где некоторые из этих таблиц имеют более 1 млн строк, когда я пытаюсь запустить ее, происходит сбой БД. Даже если я урежу этот sql, чтобы выбрать только из 3-4 таблиц, он все равно будет крашиться. Может быть, это невозможно сделать, может быть, я делаю это неправильно. Вот что я должен сделать:
Я динамически получаю cpv_id из URL-адреса. В моем примере cpv_id равен 66113000. Основываясь на этом значении, я должен выяснить, какие клубные предложения связаны с этим cpv_id. Затем на основе этих предложений я должен выяснить, у каких членов клуба есть некоторые из этих предложений. (члены клуба - компании). Затем, основываясь на идентификаторе члена клуба, я должен найти некоторую информацию о компании, которая является членом клуба, среди этих данных я должен найти компанию special_id. И на основе этого special_id я должен читать отчеты компании.
Итак, в основном: на основе cpv_id я должен найти отчеты компании для компании, имеющей клубные предложения, связанные с этим идентификатором (просто, верно?). Как видно из того, как мои таблицы связаны в SQLFiddle, мне нужно пройти через 6 таблиц, чтобы получить то, что мне действительно нужно. Еще раз, я не могу изменить структуру базы данных.
Это очень сложная вещь, я боюсь, что вы не поймете, что мне нужно. Я надеюсь, что SQLFiddle поможет. И если у вас есть еще вопросы, пожалуйста, спросите меня.
Итак, учитывая, что мое решение, мой запрос не работает из-за сбоя базы данных, если я его запускаю. Есть ли способ получить желаемый результат? Могу ли я как-то оптимизировать этот запрос, или мне нужно написать какой-то другой, или сделать что-то еще? Я довольно растерялся, так как мне никогда не приходилось углубляться и читать данные из такого количества таблиц только для того, чтобы получить желаемый результат.
Спасибо, Анита