Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Удаление из нескольких таблиц
 
 автор: IIDeckaRII   (23.04.2012 в 18:37)   письмо автору
 
 

Усть много-много таблиц (с одинаковой структурой) вида: table_1, table_4, table_3, table_105... Причем они расположены в неправильном порядке и не под всеми числами есть таблица. Можно как то удалить записи из этих таблиц, в которых type=1?

  Ответить  
 
 автор: cheops   (23.04.2012 в 19:38)   письмо автору
 
   для: IIDeckaRII   (23.04.2012 в 18:37)
 

Всех проще получить список таблиц и выполнить столько DELETE-запросов, сколько таблиц
DELETE FROM  table_1 WHERE type = 1;
...
DELETE FROM  table_1 WHERE type = 105;
...

  Ответить  
 
 автор: Valick   (23.04.2012 в 20:03)   письмо автору
 
   для: cheops   (23.04.2012 в 19:38)
 

DELETE FROM  table_105  WHERE type = 1;

  Ответить  
 
 автор: cheops   (23.04.2012 в 20:19)   письмо автору
 
   для: Valick   (23.04.2012 в 20:03)
 

Да, конечно же :)

  Ответить  
 
 автор: IIDeckaRII   (24.04.2012 в 17:21)   письмо автору
 
   для: cheops   (23.04.2012 в 19:38)
 

Таблиц может быть очень много, сотни или даже под тысячу.

  Ответить  
 
 автор: cheops   (24.04.2012 в 17:33)   письмо автору
 
   для: IIDeckaRII   (24.04.2012 в 17:21)
 

Коль скоро отказываетесь от реляционных отношений, и вместо одной таблицы используете сотни и тысячи однотипных, требуются сотни и тысячи однотипных запросов. Это цена отказа (ничего сделать нельзя, SQL компактный и удобный, только пока вы остаетесь в рамках реляционных отношений, за их границей вся работа ложится на вас). Можно, конечно, попробовать извернуться чистым SQL, написав процедуру, но на клиентском языке, вроде PHP это будет сильно проще и удобнее.

PS Вообще сейчас в MySQL есть секционирование, т.е. когда вы одну таблицу пилите на множеством мелких, но запросы к ним идут как к одной таблице. Однако, для этого нужна версия MySQL не ниже 5.1.

  Ответить  
 
 автор: IIDeckaRII   (25.04.2012 в 07:36)   письмо автору
 
   для: cheops   (24.04.2012 в 17:33)
 

А как быстрее будут выполняться запросы? В несколько небольших? Или в 1 большую, но с секционированием?

  Ответить  
 
 автор: Valick   (25.04.2012 в 07:57)   письмо автору
 
   для: IIDeckaRII   (25.04.2012 в 07:36)
 

на ваш вопрос в принципе невозможно ответить, потому что ответ зависит от самих таблиц, их структуры и от запросов
_
лучше расскажите о каких объемах идет речь, и откройте секрет, что в этих таблицах и почему их так много

  Ответить  
 
 автор: IIDeckaRII   (25.04.2012 в 17:09)   письмо автору
 
   для: Valick   (25.04.2012 в 07:57)
 

Это чаты сообществ пользователей. Соответствеено по 2 таблицы: с постами и с пользователями онлайн. Для каждого сообщества по 2 отдельных таблицы.

  Ответить  
 
 автор: Valick   (25.04.2012 в 19:04)   письмо автору
 
   для: IIDeckaRII   (25.04.2012 в 17:09)
 

и сколько всего строк в таблице чата?

  Ответить  
 
 автор: IIDeckaRII   (26.04.2012 в 18:51)   письмо автору
 
   для: Valick   (25.04.2012 в 19:04)
 

Раз в сутки обновляется-> может быть от 0 до любого числа

  Ответить  
 
 автор: Valick   (26.04.2012 в 22:05)   письмо автору
 
   для: IIDeckaRII   (26.04.2012 в 18:51)
 

достаточно странная организация чата

  Ответить  
 
 автор: IIDeckaRII   (27.04.2012 в 06:50)   письмо автору
 
   для: Valick   (26.04.2012 в 22:05)
 

Почему? Лучше хранить определенное количество записей?

  Ответить  
 
 автор: Valick   (27.04.2012 в 07:33)   письмо автору
 
   для: IIDeckaRII   (27.04.2012 в 06:50)
 

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

  Ответить  
 
 автор: IIDeckaRII   (27.04.2012 в 13:07)   письмо автору
 
   для: Valick   (27.04.2012 в 07:33)
 

Нет, огромное количество таблиц возникло из-за того, что для каждого сообщества отдельный чат, т.к. делать выборку нескольких строк из ОБЩЕЙ таблицы- долго.

  Ответить  
 
 автор: Valick   (27.04.2012 в 13:14)   письмо автору
 
   для: IIDeckaRII   (27.04.2012 в 13:07)
 

таблица создается при регистрации сообщества и существует независимо от того есть пользователи в чате или нет?
и за каждым сообществом закреплена определенная таблица, которая удаляется при удалении сообщества?

  Ответить  
 
 автор: IIDeckaRII   (27.04.2012 в 14:58)   письмо автору
 
   для: Valick   (27.04.2012 в 13:14)
 

Именно так

  Ответить  
 
 автор: Valick   (27.04.2012 в 16:04)   письмо автору
 
   для: IIDeckaRII   (27.04.2012 в 14:58)
 

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

  Ответить  
 
 автор: IIDeckaRII   (27.04.2012 в 20:21)   письмо автору
 
   для: Valick   (27.04.2012 в 16:04)
 

Обновление списка онлайн, удаление устаревших

  Ответить  
 
 автор: Valick   (27.04.2012 в 21:30)   письмо автору
 
   для: IIDeckaRII   (27.04.2012 в 20:21)
 

я так понимаю выборка списка онлайн происходит не каждый раз при выборке диалога
как у вас организован чат, фреймами или с использованием AJAX?
в любом случае выборка диалога имеет определённую периодичность, ни что не мешает сделать тоже самое для списка онлайн, только несколько увеличить паузу между запросами, от 1 до 5 минут и совместить удаление неактивных с этой выборкой
это несколько снизит нагрузку, по сравнению с перелопачиванием всех таблиц из которых многие вообще будут даже не активны
если хотите снизить нагрузку до минимума, то нужно копать в сторону http://dklab.ru/lib/dklab_realplexor/, но придется практически полностью переписывать код чата

  Ответить  
 
 автор: IIDeckaRII   (28.04.2012 в 09:29)   письмо автору
 
   для: Valick   (27.04.2012 в 21:30)
 

Мой проект рассчитан на мобильные телефоны, так что никакого JS нету

  Ответить  
 
 автор: Valick   (28.04.2012 в 10:03)   письмо автору
 
   для: IIDeckaRII   (28.04.2012 в 09:29)
 

ну каким-то образом браузер должен опрашивать сервер на предмет появления новых постов в чате, в чем проблема сделать то же самое для списка онлайн? в конце концов тупо нарисовать кнопку "обновить онлайн"
еще как вариант сделать таблицу онлайн пользователей общую для всех и работать с ней
мне лично этот вариант нравиться больше всех

  Ответить  
 
 автор: IIDeckaRII   (28.04.2012 в 10:14)   письмо автору
 
   для: Valick   (28.04.2012 в 10:03)
 

Когда пользователь обновляет(вручную) страницу чата выбираем 10 последних сообщений(если не указана страница)

  Ответить  
 
 автор: Valick   (28.04.2012 в 10:22)   письмо автору
 
   для: IIDeckaRII   (28.04.2012 в 10:14)
 

ну если обновление ручное, то ничего не мешает вместе с выборкой текста, сделать выборку онлайн пользователей, предварительно удалив устаревших (об этом я уже писал)

  Ответить  
 
 автор: cheops   (25.04.2012 в 10:40)   письмо автору
 
   для: IIDeckaRII   (25.04.2012 в 07:36)
 

Одинаково, так как это фактически эквивалентные таблицы, просто в одном случае вы каждую таблицу обслуживаете самостоятельно, а в другом случае это на себя берет база данных. Многое так же зависит от того, как вы разобьете таблицы, по какому параметру.

Разбивка таблиц на части за ради скорости прием давно известный, многие движки их решают по разному, но почти у каждого есть штатные средства. У MyISAM, к сожалению, оно появилось сравнительно недавно.

  Ответить  
 
 автор: Valick   (23.04.2012 в 20:05)   письмо автору
 
   для: IIDeckaRII   (23.04.2012 в 18:37)
 

Усть много-много таблиц (с одинаковой структурой)
это уже заставляет задуматься

  Ответить  
 
 автор: cheops   (23.04.2012 в 20:19)   письмо автору
 
   для: Valick   (23.04.2012 в 20:05)
 

Бывает выгодно, особенно, если удалять нужно часто и много.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования