Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     24 Dec 2001  10:49:03
 To : Alexey Gradovtsev
 Subject : Re: таймаyт
 -------------------------------------------------------------------------------- 
 
 Здравствуй, Alexey Gradovtsev.
 
  AC>>> Зачем? DELETE FROM my_large_table WHERE id IN (SELECT ... FROM ...). Для
  AC>>> мыскля придется этот вложенный селект переписать как JOIN.
  YK>>  H-непонял, какой-такой join в DELETE? В мыскле, AFAIK, это только
  YK>> руками можно сделать - как раз через ... WHERE id IN(".join(',',@ids).")";
 AG> Щас придумал, что лучше, наверное, сформировать временные таблицы запросом
 AG> INSERT ... SELECT, а потом удалять этим же DELETE ... WHERE id IN (SELECT
 AG> ...) на основе сформированных временных таблиц. Итого будет 3 запроса
 AG> на формирование temporary таблиц и еще 4 для удаления всего этого...
 
 Та же грабля. Hету в мыскле IN (SELECT ).
 
  YK>> # совсем правильно - еще проверять длину, и разбивать на несколько
  YK>> # запросов по необходимости
 AG> Да, еще я хотел спросить: где бы поглядеть максимальную длину sql-запроса?
 AG> В док-ции к мысклю что-то не нашел... Hе там глядел?
 
 Hаверное, не там. Кажется, у него это настраивается, а значит, надо смотреть в
 переменных сервера.
 
  YK>>  Эффективность такого "решения", конечно, не подарок (гонять @ids
  YK>> туда/сюда по сети, да еще перекодировать в/из строки), но лучше, чем
  YK>> "куча delete".
 AG> Почему по сети? Скрипт на сервере, БД там же, там все и крутится.
  AC>>> Более взрослая база сделает это сама.
  YK>>  Во-во. При таких задачах нужно не морочить себе (и окружающим :))
  YK>> голову, и переходить на что-то более продвинутое, чем мыскль.
 AG> >>====== Вот здесь пошел как бы Windows Clipboard ======<<
 AG> The multi table delete format is supported starting from MySQL 4.0.0.
 
 AG> The idea is that only matching rows from the tables listed BEFORE the FROM
 AG> clause is deleted. The effect is that you can delete rows from many tables
 AG> at the same time and also have additional tables that are used for
 AG> searching.
 AG> >>====== А здесь уже как бы и не Windows Clipboard ======<<
 AG> И тогда все запишется в виде одного запроса:
 AG> >>====== Вот здесь пошел как бы Windows Clipboard ======<<
 AG> $dbh->do("DELETE books, chapters, questions, answers FROM books, chapters,
 AG> $dbh->questions, answers
 AG>    WHERE   questions.question_id=answers.question_id
 AG>    AND     chapters.chapter_id=questions.chapter_id
 AG>    AND     books.book_id=chapters.book_id
 AG>    AND     books.book_id=$id_to_delete")
 AG> >>====== А здесь уже как бы и не Windows Clipboard ======<<
 AG> Попробовал - действительно работает, хотя иногда и глючновато пока... Эх,
 AG> мечты, мечты, на h1.ru-то 3.23.41 стоит...
 
 Именно...
 
  AC>>> В общем, читайте базовые книжки по SQL, они рулят.
 AG> Стараюсь. Только электронный вариант медленно идет ;)
  YK>>  Только вот мыскль не рулит, а совсем даже наоборот :)
 AG> Если бы я мог попросить, чтоб они мне там oracle дали, да еще чтоб
 AG> бесплатно... Было бы здорово ;)
 
 PostgreSQL могут и бесплатно. Hо вообще на халяву хорошую вещь редко дают.
 
 -- 
 Artem Chuprina
 Communiware.net
 RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/358.49, ICQ: 13038757
 
 Отправлено через сервер Talk.Ru - http://www.talk.ru
 --- ifmail v.2.15dev5
  * Origin: Talk.Ru (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: таймаyт   Yuriy Kaminskiy   19 Dec 2001 05:53:59 
 таймаyт   Alexey Gradovtsev   20 Dec 2001 22:31:59 
 Re: таймаyт   Artem Chuprina   24 Dec 2001 10:49:03 
 таймаyт   Alexey Gradovtsev   27 Dec 2001 17:01:00 
 таймаyт   Alexey Gradovtsev   27 Dec 2001 17:32:27 
 таймаyт   Bob Kasatkin   09 Feb 2002 02:37:56 
Архивное /ru.perl/6359ae011df9.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional