![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
knopka |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 17.1.2006 Где: Россия: Петербург Репутация: нет Всего: 1 |
Всем доброго дня.
Есть база данных почты на MySQL Используются Prepared Statement Делаю запрос количества непрочитанных писем по ид адресата а ид адресата беру из другой таблицы по Имени
Вопрос: как лучше получить количество писем одним запросом как выше или двумя. Именно при использовании Prepared Statement
Прочитал где-то в нете, что подзапросы используют только новички Заранее благодарен |
||||||
|
|||||||
Ares4322 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 25.9.2007 Где: Россия, Москва Репутация: 2 Всего: 3 |
Да все равно по-идее. Что там, что там база будет перебирать одинаковое количество строк. Только во втором случае придется их самому склеивать.
Немного оффтопа. Для повышения производительности можно пренебречь нормализацией базы и добавлять к таблицам сущностей, связанных с пользователями, id пользователя и вешать на него неуникальный индекс. А в http-сессии хранить id пользователя (или целиком объект пользователя). И в запросы сразу добавлять id пользователя. Таким образом можно решить сразу 2 задачи: увеличение производительности и контроль доступа, так как запросы будут возвращать только строки для данного пользователя. |
|||
|
||||
danilych |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 2.2.2011 Репутация: нет Всего: 3 |
глупости все это Тут двояко к ситуации можно относиться: 1. Некоторые стараются писать запросы так, чтобы за один запрос получить все необходимые данные Недостаток этого метода в том, что будете повторять один и тот же подзапрос много раз во внешних(те которые содержат подзапросы) запросах. Достоинство - меньшая нагрузка на сеть и на БД. 2. Добиться максимальной структуризации, т.е. для достижения цели использовать множество обращений к бд с помощью простых запросов. Достоинство - запросы структурированы и используются многократно. Недостаток - нагрузка на БД и на сеть. |
|||
|
||||
knopka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 17.1.2006 Где: Россия: Петербург Репутация: нет Всего: 1 |
в первом варианте запроса будет создаваться один объект содержащий данные типа
count-id-name Во втором два объекта типа: 1. count-id 2. id-name Складывается впечатление, что второй на одну составляющую хранится больше, значит и памяти например выделится на 1/4 больше(утрирую) Я не прав? |
|||
|
||||
Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: 3 Всего: 5 |
Простое лучше сложного. Пользуй второй.
А уж когда потребуется производительность, тогда чеши репу над сложными вложенными запросами. -------------------- Таково моё общее мнение. |
|||
|
||||
Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: нет Всего: 9 |
Я бы написал через JOIN
|
|||
|
||||
knopka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 17.1.2006 Где: Россия: Петербург Репутация: нет Всего: 1 |
а если движок ИнноДБ?
|
|||
|
||||
Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 2 Всего: 16 |
Э-э-э... А что, join-ы уже запретили?
Не? |
|||
|
||||
Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: нет Всего: 9 |
а что это меняет? |
|||
|
||||
knopka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 17.1.2006 Где: Россия: Петербург Репутация: нет Всего: 1 |
штука в том, что ИнноДБ движек использует для хранения записей кластеризованные по первичному ключу таблицы,
а еще может построить хэш-индекс по первичному ключу. |
|||
|
||||
Ares4322 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 25.9.2007 Где: Россия, Москва Репутация: 2 Всего: 3 |
Так задача то какая?
Чтобы работало быстро или чтобы было красиво? Все же от этого зависит. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |