![]() |
|
Модераторы: skyboy |
![]()
|
|
| mus |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 22.5.2005 Репутация: нет Всего: 1 |
Вопрос из ряда теоретических. В конце вопроса один практический подвопрос.
Перешел к изучение CakePHP, отсюда и структура всего действа. Имеются две таблицы - topics и messages, связаны как один-ко-многим. В топиках - название темы, дата создания, в мессагах, соответственно, сами сообщения. Нужно построить запрос, который выведет следующее topics.Название темы | topics.дата_создания | кол-во сообщений в теме (на ум приходит только вложенный запрос, типа (SELECT COUNT(*) messages WHERE topics.topics_id = messages.topics_id) По идее - вложенные запросы создают напряги. Так как давно не программил в принципе, забыл, какая есть у вложенных запросов альтернатива. То ли левое и правое объединение, то ли ещё что...короче, запутался. Теперь ситуация у CakePHP (mvc-фреймворк). Там есть такая мулька, позволяющая ассоциативно связать две модели. Я связал. При запросе $this->findAll(); мы получаем вот такой схематичный массив:
По идее, для того, чтобы вывести нужную мне строку вида (название темы | дата | кол-во сообщений), можно просто взять и при выводе массива на экран в поле кол-во сообщений вбить
Работает и то и другое. Только вот в чем вопрос - представьте, что записей у меня в таблице - около миллиона. Если я с помощью CakePHP свяжу таки эти модели и буду вот так подсчитывать кол-во сообщений, то на мой взгляд, выборка этих сообщений и занесение в массив не рационально с точки зрения используемой памяти. А если мы будем решать вопрос по первому пути, то есть с вложенным запросом, то тоже вроде нагрузка получается, ибо вложенный запрос нагрузка сам по себе. Вот и выбираю из двух зол, забыв, как можно избежать внутренний запрос. А теперь вопрос вполне практический: Господа, какие Вы используете средства для тестирования скорости запроса к базе данных? Вот в моем примере мне нужно создать кучу записей, положим, с пол миллиона, чтобы поглядеть, какой запрос или способ исполняется дольше. Но ведь можно все это как-то имитировать? Может инструменты какие есть, а?.. |
||||
|
|||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Хреново, если больше ничего не приходит...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| mus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 22.5.2005 Репутация: нет Всего: 1 |
Akina, спасибо!
Я интуитивно понимал, что есть такое решение, но уже напрочь забыл синтаксис. Мне ещё многое предстоит вспомнить. Есть какие рекомендации относительно тестирования скорости запросов с условием имитации их множества?.. Или имитации множества записей?.. Был, вроде, такой инструмент...иль не был... Полгода не программил вообще... Буду иногда ошеломлять вопросами, извините заранее... |
|||
|
||||
| mus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 22.5.2005 Репутация: нет Всего: 1 |
Akina, что-то, кстати, запрос Ваш не работает...
У меня MySQL 5.0.45-community-nt на localhost Пишет
Ругается, что не понимает такой конструкции, как count(m.*) в перечислении филдов... |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 6 Всего: 44 |
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |