|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.04.2008, 18:19 | #1 |
Antimoderаtoris
Участник клуба
Регистрация: 08.02.2008
Сообщений: 1,251
|
Как оптимизировать запрос MySQL с выборкой из двух таблиц.
Здрасте.. Вот и я к вам за советом пришёл. Надеюсь поможете.
Вобщем, есть запрос из MySQL по выборке объекта с его фотографией. Так как фотографий может быть несколько на объект и у каждой своё название и описание, а также фотографии могут меняться по ходу жизни проекта, то названия файлов для фотографий каждого объекта вынесены в отдельную таблицу. Соответственно создал запрос вида: PHP код:
PHP код:
Вобщем проблема в том, что не у всех объектов есть фотография. Если у рандомного объекта нет фотографии, то данный запрос возвращает пустой результат. Теперь внимание, вопрос: "Возможно ли изменить данный запрос так, чтобы выбирался только объект имеющий хотя бы одну фотографию, без добавления нового поля в таблицу объектов? Если возможно, то как?" Заранее всем спасибо.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
|
12.04.2008, 18:40 | #2 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
А почему бы не перевернуть задачу - выбирать не случайный объект, а случайную фотографию и её объект?... Если "LIMIT 1", тем более...
|
12.04.2008, 18:50 | #3 |
Antimoderаtoris
Участник клуба
Регистрация: 08.02.2008
Сообщений: 1,251
|
Тогда чаще будут выбираться объекты с бОльшим количеством фотографий. А это не есть гут.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
|
12.04.2008, 19:57 | #4 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Что-то как я голову ни ломал, ничего туда кроме процедур, вспомогательной таблицы или order by rand() не пришло... Может стоит померять, что из этих вариантов будет быстрее работать?...
---------------------- Ещё, как вариант, можно попробовать сделать select ...... order by rand() по результату (select distinct owner from j_photoes), но боюсь это будет ещё медленнее... Последний раз редактировалось B_N; 12.04.2008 в 20:10. |
12.04.2008, 20:19 | #5 |
Antimoderаtoris
Участник клуба
Регистрация: 08.02.2008
Сообщений: 1,251
|
Любое использование order by rand() в таблице, где более 10000 записей конкретно тормозит выполнение скрипта.
У меня намечается более 10000 объектов, плюс 0-20 фотографий для каждого объекта. Соответственно использовать order by rand() невозможно. Я думаю, что я добавлю просто счётчик фотографий в таблицу объекта. По-другому не могу найти. И выбирать буду только объект у которого более 0 фотографий.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
|
12.04.2008, 20:31 | #6 | |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Цитата:
А как Вы их будете выбирать случайным образом? Всё равно если (SELECT CEIL(RAND()....), то придется сформировать список, а если order by rand(), то то же самое.... |
|
13.04.2008, 03:10 | #7 |
Antimoderаtoris
Участник клуба
Регистрация: 08.02.2008
Сообщений: 1,251
|
Так, хорошо... Вот здесь я потерялся...
В какой момент срабатывает условие "WHERE `active` = 1" ? Разве я не смогу добавить к нему "AND photoes > 0"? Завтра утром зароюсь в мануал по этому поводу.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите, пожалуйста, с выборкой | Chel | БД в Delphi | 24 | 05.06.2008 05:00 |
MySQL нужна библ. для Visual C++ (MySql++) | Alexoid | Visual C++ | 8 | 07.05.2008 18:29 |
Оптимизировать код | NeiL | Помощь студентам | 2 | 21.02.2008 08:57 |
запрос в MySQL, Error | Teksa | БД в Delphi | 4 | 12.10.2007 22:03 |
Через запрос перенести данные с 6 таблиц | Таня84 | БД в Delphi | 5 | 22.03.2007 15:46 |