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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Alexey Gradovtsev                    2:5030/1247.7  20 Dec 2001  22:31:59
 To : Yuriy Kaminskiy
 Subject : таймаyт
 -------------------------------------------------------------------------------- 
 
 
 Yuriy Kaminskiy в письме к Artem Chuprina от 19 декабря 2001 г., 04:53 писал:
 
  AC>> Зачем? DELETE FROM my_large_table WHERE id IN (SELECT ... FROM ...). Для
  AC>> мыскля придется этот вложенный селект переписать как JOIN.
  YK>  H-непонял, какой-такой join в DELETE? В мыскле, AFAIK, это только
  YK> руками можно сделать - как раз через ... WHERE id IN(".join(',',@ids).")";
 
 Щас придумал, что лучше, наверное, сформировать временные таблицы запросом
 INSERT ... SELECT, а потом удалять этим же DELETE ... WHERE id IN (SELECT ...)
 на основе сформированных временных таблиц. Итого будет 3 запроса на формирование
 temporary таблиц и еще 4 для удаления всего этого...
 
  YK> # совсем правильно - еще проверять длину, и разбивать на несколько
  YK> # запросов по необходимости
 
 Да, еще я хотел спросить: где бы поглядеть максимальную длину sql-запроса?
 В док-ции к мысклю что-то не нашел... Hе там глядел?
 
  YK>  Эффективность такого "решения", конечно, не подарок (гонять @ids
  YK> туда/сюда по сети, да еще перекодировать в/из строки), но лучше, чем
  YK> "куча delete".
 
 Почему по сети? Скрипт на сервере, БД там же, там все и крутится.
 
  AC>> Более взрослая база сделает это сама.
  YK>  Во-во. При таких задачах нужно не морочить себе (и окружающим :))
  YK> голову, и переходить на что-то более продвинутое, чем мыскль.
 >>====== Вот здесь пошел как бы Windows Clipboard ======<<
 
 The multi table delete format is supported starting from MySQL 4.0.0.
 
 The idea is that only matching rows from the tables listed BEFORE the FROM
 clause is deleted. The effect is that you can delete rows from many tables at
 the same time and also have additional tables that are used for searching.
 
 >>====== А здесь уже как бы и не Windows Clipboard ======<<
 
 И тогда все запишется в виде одного запроса:
 
 >>====== Вот здесь пошел как бы Windows Clipboard ======<<
 $dbh->do("DELETE books, chapters, questions, answers FROM books, chapters,
 $dbh->questions, answers
 
    WHERE   questions.question_id=answers.question_id
    AND     chapters.chapter_id=questions.chapter_id
    AND     books.book_id=chapters.book_id
    AND     books.book_id=$id_to_delete")
 
 >>====== А здесь уже как бы и не Windows Clipboard ======<<
 
 Попробовал - действительно работает, хотя иногда и глючновато пока... Эх, мечты,
 мечты, на h1.ru-то 3.23.41 стоит...
 
  AC>> В общем, читайте базовые книжки по SQL, они рулят.
 
 Стараюсь. Только электронный вариант медленно идет ;)
 
  YK>  Только вот мыскль не рулит, а совсем даже наоборот :)
 
 Если бы я мог попросить, чтоб они мне там oracle дали, да еще чтоб бесплатно... 
 Было бы здорово ;)
 
    20 декабря 2001 г.                            С наибестейшими регардсами,
                                                                      *Alexey*.
 ... Смерть стоит того, чтобы жить... В. Цой.
 --- GoldED+/W32 snapshot-2001.02.24
  * Origin: Три века без сна... (2:5030/1247.7)
 
 

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

 Тема:    Автор:    Дата:  
 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/39613c222ef9.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional