PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (7): [1] 2 3 4 5 6 7 »

> Найдено сообщений: 92
MrBeard Отправлено: 30 Ноября, 2011 - 11:32:06 • Тема: Подготовка к старту • Форум: Обучение на основе реальных проектов

Ответов: 34
Просмотров: 21606
0. Подтверждаю
1. mr..beard
2. Алексей
3. -
4. Интерактивный учебник по PHP
5. 1-2 часа в день вечером
MrBeard Отправлено: 30 Ноября, 2011 - 11:00:31 • Тема: С форума по строчке, или как можно научиться программировать • Форум: Обучение на основе реальных проектов

Ответов: 159
Просмотров: 71076
- есть
- готов
- сложно сказать сразу. Буду, но с меньшим энтузиазмом
MrBeard Отправлено: 30 Ноября, 2011 - 10:45:26 • Тема: нахождение большого количества строк по отсутствию ID в другой таблице • Форум: Работа с СУБД

Ответов: 13
Просмотров: 3349
CODE (SQL):
скопировать код в буфер обмена
  1. DELETE table1  FROM table1
  2. LEFT JOIN table2 ON table1.id_session = table2.id_session
  3. WHERE table2.id_session IS NULL;
MrBeard Отправлено: 30 Ноября, 2011 - 10:39:49 • Тема: нахождение большого количества строк по отсутствию ID в другой таблице • Форум: Работа с СУБД

Ответов: 13
Просмотров: 3349
я бы назвал это элементарным математическим расчётом

для одноразовой операции 10 минут написания запроса + 14 часов выполнения его без моего вмешательства выиграли у 1-2 дней написания скрипта + непрогнозируемого времени удаления этих же полумиллиарда строк=)
MrBeard Отправлено: 30 Ноября, 2011 - 09:58:02 • Тема: нахождение большого количества строк по отсутствию ID в другой таблице • Форум: Работа с СУБД

Ответов: 13
Просмотров: 3349
Query OK, 411588105 rows affected (14 hours 3 min 54.24 sec)

всего то...=)
MrBeard Отправлено: 29 Ноября, 2011 - 13:48:59 • Тема: нахождение большого количества строк по отсутствию ID в другой таблице • Форум: Работа с СУБД

Ответов: 13
Просмотров: 3349
EuGeN, Stierus
Спасибо
MrBeard Отправлено: 29 Ноября, 2011 - 13:30:56 • Тема: нахождение большого количества строк по отсутствию ID в другой таблице • Форум: Работа с СУБД

Ответов: 13
Просмотров: 3349
Stierus
архивная БД и актуальная не идентичны по полям. может, я не совсем верно их обозвал, но смысл следующий - в актуальной в основной таблице около 20 столбцов ещё куча связанных таблиц, туда вытягиваются данные определённые из нужных сессий. в основной таблице дублирующихся сессий нет. Архивная БД сохраняет ВООБЩЕ ВСЁ, что мне шлют в сессиях, а это - произвольное количество полей. потому в таблице с одним id_session может быть 20-150 строк.
В прочем, пока я это писал, до меня дошло, что можно сделать группировку по id_session и получится применить ваш скрипт
другой вопрос - выгрузка данных + проход скриптом + загрузка результата в БД будет быстрее, чем
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE tmp_sessions engine=memory
  2.     SELECT table1.id_session
  3.     FROM table1
  4.     LEFT JOIN table2 USING(id_session)
  5.     WHERE table2.id_session IS NULL
  6.     GROUP BY id_session;
MrBeard Отправлено: 29 Ноября, 2011 - 11:14:27 • Тема: нахождение большого количества строк по отсутствию ID в другой таблице • Форум: Работа с СУБД

Ответов: 13
Просмотров: 3349
EuGen пишет:
Кросс-БД запросы будут работать крайне медленно почти всегда.
Скопируйте имеющуюся таблицу с актуальными данными в архивную БД и сделайте через JOIN (приведу пример - если я правильно понял какая таблица - архивная, а какая - актуальная. Поменяете местами, если не так)
CODE (SQL):
скопировать код в буфер обмена
  1. DELETE FROM table1 LEFT JOIN table2 ON table1.id_session=table2.id_session WHERE table2.id_session IS NULL

- но и это не даст "колоссального" ускорения, если отсутствуют индексы.


индексы по id_session присутствуют, но количество строк в архивной БД - чуть больше 2х миллиардов. Посмотрим, не встанет ли мускуль раком=)
MrBeard Отправлено: 29 Ноября, 2011 - 09:59:41 • Тема: нахождение большого количества строк по отсутствию ID в другой таблице • Форум: Работа с СУБД

Ответов: 13
Просмотров: 3349
Добрый день.
есть довольно большая архивная база данных (около 200Гб) из нескольких таблиц примерно следующего типа -
CODE (SQL):
скопировать код в буфер обмена
  1. id_session(INT) | id_counter(INT) | value(BIGINT OR TEXT)

на мой взгляд(сейчас) не самая удачная конструкция, но ... такая уж есть=)
есть другая база данных (с актуальной информацией), в которой есть таблица, хранящая актуальные данные по сессиям.
Необходимо - удалить из архивной БД все записи с id_session, которых нету в актуальной базе данных.
мне знаний хватает только на то, чтобы родить следующий запрос
CODE (SQL):
скопировать код в буфер обмена
  1. DELETE FROM db1.table1
  2. WHERE id_session NOT IN (SELECT id_session FROM db2.table1)

а ещё я знаю, что подобный запрос у меня будет работать до китайской пасхи=)
В связи с этим два вопроса
- как MySQL оптимизирует подобный запрос и где об этом почитать?
- есть ли конструкции, которые помогут ускорить выполнение требуемой задачи?
(Добавление)
можно, кстати, сначала найти id_session, которых нету в актуальной БД, поместить их в темповую БД и удалять уже, используя IN вместо NOT IN
подозреваю, что это ускорит работу, но не колоссально=(
MrBeard Отправлено: 06 Октября, 2011 - 14:24:29 • Тема: MySQL выборка. • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 97
тоже не знаю, возможно ли. если не ошибаюсь, проверить существование результата можно только ПОСЛЕ отработанного запроса. так что, как мне кажется, придётся делать в два запроса с условием либо в PHP, либо в процедуре
MrBeard Отправлено: 30 Сентября, 2011 - 17:20:44 • Тема: SQL счетчик • Форум: SQL и Архитектура БД

Ответов: 2
Просмотров: 55
мой код ещё не закидали какашками? удивительно)

кстати, советовал бы завести отдельную табличку, где хранить количество slug для каждого пользователя и при добавлении в таблицу slug нового значения(или удаления) инкрементировать счётчики в этой статистической таблице.
MrBeard Отправлено: 30 Сентября, 2011 - 14:41:42 • Тема: SQL счетчик • Форум: SQL и Архитектура БД

Ответов: 2
Просмотров: 55
Вообще не уверен, что это будет работать, тем более правильно, но...
CODE (SQL):
скопировать код в буфер обмена
  1. (SELECT users.id, users.username, count(slug.id) AS slugCount
  2. FROM slug
  3. JOIN users ON users.id = slug.user_id
  4. GROUP BY slug.user_id
  5. ORDER BY slugCount
  6. HAVING slugCount =>
  7.     (SELECT count(slug.id) AS userSlugCount
  8.     WHERE username = 'Vasya'
  9.     GROUP BY slug.user_id)
  10. LIMIT 50)
  11. UNION
  12. (SELECT users.id, users.username, count(slug.id) AS slugCount
  13. FROM slug
  14. JOIN users ON users.id = slug.user_id
  15. GROUP BY slug.user_id
  16. ORDER BY slugCount DESC
  17. HAVING slugCount <
  18.     (SELECT count(slug.id) AS userSlugCount
  19.     WHERE username = 'Vasya'
  20.     GROUP BY slug.user_id)
  21. LIMIT 50)


Вечером, когда время будет, проверю и может придумаю что лучше(а может, тут ответят правильно=) )
MrBeard Отправлено: 30 Сентября, 2011 - 12:54:58 • Тема: Вопрос по css • Форум: Вопросы новичков

Ответов: 7
Просмотров: 361
Цитата:
хочу закруглить первый и последний элемент навигации

ещё можно было бы глянуть на псевдо-классы first-child и last-child
MrBeard Отправлено: 30 Сентября, 2011 - 11:35:53 • Тема: что лучше и удобней? • Форум: Объектно-ориентированное программирование

Ответов: 17
Просмотров: 5649
да я знаю, чем отличается статическое свойство от динамического. и статический метод от динамического.
всё, что меня сейчас удивило - это то, что в документации нету упоминания о возможности вызова статического метода через экземпляр класса. и то, что о вызове статических свойств и методов через static:: можно узнать только из комментариев(хотя, может, плохо искал.)
и то, что это возможно, не говорит о том, что я брошусь везде это использовать., безумно хохоча и размахивая руками. просто удивление вызвало, а мне тут уже объясняют про существующие утверждения, когда и как надо делать. (без, кстати, указания, где эти утверждения написаны).
MrBeard Отправлено: 30 Сентября, 2011 - 10:59:32 • Тема: что лучше и удобней? • Форум: Объектно-ориентированное программирование

Ответов: 17
Просмотров: 5649
Цитата:
Есть четкое разделение, когда как нужно делать - так и делайте

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

Страниц (7): [1] 2 3 4 5 6 7 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB