Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Вывод данных сразу из нескольких таблиц БД
Karamba666  
 ۩     Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 5
Пользователь №: 43513
На форуме: 1 месяц, 12 дней
Карма:




У меня на сайте имеются разделы. Их около 7 (Анекдоты, картинки, загадки и тд.)
Таблицы под каждый раздел немного отличаются друг от друга, немного)

Я решил на главной странице сделать так, чтобы выводились последние материалы из ВСЕХ 7-ми таблиц.

Подскажите, как лучше быть?
1. Создать 1 таблицу, и впихнуть туда 7 мелких? Чтобы была каша? Но зато для вывода потребовалась бы 1 несложный запрос?
2. Либо же оставить эти 7 таблиц по отдельности, и как-то одним запросом выводить материалы сразу из 7 таблиц?

Если выбирать второй вариант, то вот как я соединяю таблицы:
mysql_query("SELECT id FROM joke UNION SELECT id FROM zagadki");



Вроде работает, но мне сказали что лучше избегать JOIN-ы, а UNION это походу тоже самое что и джоин?

Возможно в моём случае джоин не так страшен, так как нет никакой связи между строками первой таблицы и второй в виде tb1.id = tb2.user_id

Кто что может сказать? Как мне лучше поступить? И второй вариант будет ли ложить БД, если нужно селектить 7 таблиц? Либо же всё запихать в 1 таблицу, и делать 1 селект запрос без джоинов?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
RootPM  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 169
Пользователь №: 43443
На форуме: 2 месяца, 4 дня
Карма: 1




Смотря как часто обновляются эти 7 таблиц, если редко, то можно создать одну таблицу и каждые 5-30 минут обновлять её.

У этих 7 таблиц связи есть какие? Если нет, то зачем их объединять, делайте запросы к каждой таблице по отдельности, указывая DESC и LIMIT

Это сообщение отредактировал RootPM - 22.10.2016 - 13:48


--------------------
Все будет офигенно. Кому-то сразу, кому-то постепенно.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
RootPM  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 169
Пользователь №: 43443
На форуме: 2 месяца, 4 дня
Карма: 1




С другой стороны главная страница - это нагрузка, более реальным и простым решением записывать по тайм-ауту в файл и подгружать его на главной странице.


--------------------
Все будет офигенно. Кому-то сразу, кому-то постепенно.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 7 дней
Карма: 170




Цитата (Karamba666 @ 22.10.2016 - 11:03)
Таблицы под каждый раздел немного отличаются друг от друга, немного)

Это неправильная структура базы.
Показывай структуру таблиц, перестроим, и будет элегантное решение.


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Karamba666  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 5
Пользователь №: 43513
На форуме: 1 месяц, 12 дней
Карма:




Ну сами данные в таблицах обновляются очень редко, я бы даже сказал не обновляются, а добавляются)
Просто если людей будет заходить на сайт очень много, и каждый вместо 1 запроса будет брать ещё +6 дополнительных, то это мне кажется плохо...

Связей у таблиц нет. Просто мне кажется лучше сделать 1 запрос, чем 7?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Karamba666  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 5
Пользователь №: 43513
На форуме: 1 месяц, 12 дней
Карма:




AllesKlar
Тоесть ты хочешь сказать лучше объеденить все таблицы вместе, и сделать кашу? smile.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 7 дней
Карма: 170




Цитата (Karamba666 @ 22.10.2016 - 12:51)
AllesKlar
Тоесть ты хочешь сказать лучше объеденить все таблицы вместе, и сделать кашу? smile.gif

Это не каша, а нормальная форма
Просвещаемся: https://habrahabr.ru/post/254773/

отсюда и твоя головная боль
Цитата
Просто если людей будет заходить на сайт очень много, и каждый вместо 1 запроса будет брать ещё +6 дополнительных, то это мне кажется плохо...


А если ты позже добавишь еще "истории", "комиксы" и т.д.
Под каждый новый тип будешь делать новую таблицу и переписывать сайт?
И слать вместо 6-ти запросов 54?

Записи идентичные, отличаются только типы. Следовательно, в таблице должно быть поле type, которое будет идентифицировать контетнт.


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
RootPM  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 169
Пользователь №: 43443
На форуме: 2 месяца, 4 дня
Карма: 1




Самым элегантным решением в вашем случае подключать на главной странице - файл и обновлять его при добавлении информации в одну из этих таблиц.

В этом случае нагрузки для соединения с базой данных и обработки запроса вообще не будет.

Это сообщение отредактировал RootPM - 22.10.2016 - 14:58


--------------------
Все будет офигенно. Кому-то сразу, кому-то постепенно.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 7 дней
Карма: 170




Цитата (RootPM @ 22.10.2016 - 12:57)
Самым  элегантным решением в вашем случае подключать на главной странице - файл и обновлять его при добавлении информации в одну из этих таблиц.

В этом случае нагрузки для соединения с базой данных и обработки запроса вообще не будет.

Какой файл? Может еще звонить в техподдержку и просить прислать факсом?
Где файлы и где базы данных?
А когда к сайту подключится 1000 пользователей, то файл будет открыт 1000 раз?
А если ось скажет, что максимально допустимое количество открытых фалов превышено, то запрос не будет обработан?

То что ты предлагаешь - называется кеш. Если записи обновляются редко, то кешировать контент выдаваемый сервером.


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
RootPM  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 169
Пользователь №: 43443
На форуме: 2 месяца, 4 дня
Карма: 1




AllesKlar

Этот файл будет находиться в памяти. Даже на диск нагрузки не будет.


--------------------
Все будет офигенно. Кому-то сразу, кому-то постепенно.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Karamba666  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 5
Пользователь №: 43513
На форуме: 1 месяц, 12 дней
Карма:




AllesKlar
Тоесть 1 таблицу делать?
Просто если человек зайдёт на страницу одного типа, то ему придётся всю эту таблицу селектить, чтобы отобрать нужный материал)

Тоесть так бы он селектил только 1 таблицу с 1000 записями, а так он будет селектить тоже одну таблицу, но уже с 7000 записями, и отбирать из них type = 1

Тоесть всё равно вариант с 1 таблицей лучше всего?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 7 дней
Карма: 170




Нормализованные таблицы + индексы. И хоть 1 000 000 записей
Помимо прочего, СУБД тоже не дураки пишут, (зависит от базы) в большинстве случаев запрос будет закеширован тоже


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Karamba666  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 5
Пользователь №: 43513
На форуме: 1 месяц, 12 дней
Карма:




AllesKlar
Ну у меня индексы только на id стоят)
...
А можно как-то с тобой связаться?) ну ася там, или ВК?
Ну или хотябы скайп - но не желательно smile.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 7 дней
Карма: 170




Karamba666
Нельзя, конечно же.
Формат форума подразумевает помощь, советы. ты принимаешь решение и делаешь сам. участники помогают, критикуют. Ты набираешься опыта и однажды сам начинаешь помогать другим.

Либо ты постишь свою проблему в разделе Проекты http://phpforum.su/index.php?showforum=112 с указанием бюджета.
На форуме много толковых ребят, которые за денюжку сделают вместо тебя все в лучшем виде.
Мне же подобные "шабашки" лет 10 как не интересны.

Я же... советом помогу, а частная беседа, после трудовой недели, в выходной... не понянешь финансово smile.gif

Без обид. smile.gif

Я тебе сказал: выкладывай структуру таблиц. народ подтянится, коллективным разумом сделают тебе из ... твоей базы конфетку.


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1042
Пользователь №: 41686
На форуме: 1 год, 3 месяца, 25 дней
Карма: 13




Вот как раз здесь хорошо подойдет MongoDB, поскольку картинки, истории, анекдоты - это скорее всего конечные сущности (то есть документы в чистом виде). И никак друг с другом или еще как-то особо не связаны, чтобы хотеть реляционку. Получится один или два "синтетических" джойна, причем легких. Чисто для маппинга к категориям ну и еще там чего-нть, ХЗ чего там в проекте.

Зато schemaless решение позволит очень легко удалять/добавлять поля из/в "схему", тем самым обеспечивать столько различных сущностей, сколько потребуется. Хоть сотню. А контролировать можно хоть через entity, хоть специальными документами - контрактами, назовем их так. wink.gif Они же могут быть и категориями, кстати. Смотря насколько абстрактно всё делать. Единственное с чем вероятно возникнут сложности это не с выборкой, а с отображением (внезапно) одной кучей. Вот где будет хитрая задачка-то! Тут нужно покумекать с шаблонизатором, реализовать своего рода sass-овские миксины. Либо фетчить различные файлы по условию. Но тут хардкод, без него обойтись проблематично, слушай... =( Запихивать в контракт отдельным полем/свойством partial которым он должен рендериться? Думать надо.

тык
Тот самый случай о чем был спор с сантехником недавно. Я бы делал подобный проект исключительно на MongoDB. Она здесь вписывается лучше не придумаешь.

Кстати, выборка из нескольких sibling таблиц вообще через джойны не делается. А UNION это не джоин wink.gif

Это сообщение отредактировал Ron - 23.10.2016 - 20:14


--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса