|
|
|
Supreme Being
      
участник
Last Login: 12.06.2008 11:23
Сообщ.: 96,
Visits: 535
|
|
| Доброе время суток! Еще один вопрос возник по ходу разработки. Сколько запросов к MySQL за раз можно считать приемлимым? Например, чтобы отобразить темы в форуме у меня делается порядка 6 запросов к базе. Сначала делается запрос по темам, потом по ID номерам пользователей делается запрос их логинов, дате создания тем и т.п. Далее делается проверка пользователей, которые просматривают данную тему. И т.д. Нормально ли 6 завпрсов за раз? Или их стоит сократить? Если сокращать кол-во запросов, я думал создать в ДБ триггер, который будет необходимую информацию выдавать в минимальное количество запросов. Т.е. в table я создам дополнительные ячейки, допустим, для логина автора темы и триггер будт автоматеически при запросе помещать нужное значение в нужную ячейку.
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 15.03.2008 7:33
Сообщ.: 1 329,
Visits: 15 053
|
|
Лучше спроектировать базу таким образом, чтобы минимизировать количество и сложность запросов на выборку, усложнив логику и количество запросов на вставку/обновление. Хранить вычисляемые данные в таблицах и вычислять их при обновлении данных, а не вычислть их "на лету". При этом количество хранимых данных будет избыточным, что будет противоречить духу нормализации баз данных, но в каждом конкретном случае приходится искать компромисс.
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Тут все зависит от кол-ва посетителей на сайте. Если, к примеру, на сайт заходит 1 человек в час то можно хоть 50 запросов делать с одной страницы. Хотя, конечно, чем меньше запросов к базе тем лучше. Уменьшать кол-во запросов можно оптимизируя структуру БД, кешируя часто используемые и редко изменяемые данные. Триггерры в данном случае по моему совсем не нужны. Пользуйся JOIN-ами.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 12.06.2008 11:23
Сообщ.: 96,
Visits: 535
|
|
| Возможно ли заполнить ячейку данными из другой таблицы, зная id? Например у меня есть таблица в schema1.table1 id | message | text_id | text | и таблица в schema2.table1 id | text | И по text_id мне необходимо заполнить ячейки text. Т.е. что-то вроде Exel'я получается A1=B1.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 12.06.2008 11:23
Сообщ.: 96,
Visits: 535
|
|
| А! Вот кажется решение! SELECT * FROM schema1.table1 LEFT JOIN schema2.table1 ON schema1.table1.text_id=schema2.table1.id; Помоему это как раз выполнит то, что я описал выше.
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
|
|
|