Запрос использует cakephp для вызова базы данных, вот запрос:
find('all', array(
'conditions' => array(
'OR' => array(
'PdfFolder.is_global' => true,
'PdfFoldersUser.user_id' => $this->Auth->user('id'))
),
'recursive' => 0,
'order' => array('PdfFolder.is_global DESC', 'PdfFolder.name')
Таблица pdffolder имеет около 2100, однако таблица отношений, которая содержит pdf_folder_id и user_id, содержит почти 30000 записей. Время от времени этот запрос может занять до 35 секунд. Я не настраивал код, и я не являюсь экспертом по базам данных, он просто упал на меня как на разработчика.
Похоже, идентификатор для каждой таблицы настроен как первичный ключ, как и все индексы, которые я вижу.
Спасибо за любой совет.
EDIT
Структура таблицы
Пользователи
| id (index) | role_id | username | password | email |
pdf_folders
| id (index) | name | date_created | is_global(bool) |
pdf_folders_users
| id (index) | folder_id | user_id (now an index) |
PDFs
| id (index) | parent_id | pdf_folder_id | ...more file information