нужно удалить из базы данных пустые значения.

Тема в разделе "PHP", создана пользователем асс, 20 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220
    доброго всем дня.
    Подскажите пожалуйста как из таблоицы .
    удалить все данные которые имеют значение 0 ?


    в общем есть 3 поля

    поле 1 имеет дату проверки дата в виде 1237544886
    поле 2 имеет значение 0 и до бесконечности
    поле 3 имеет значение 0 до 10


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

    Удаление делать если поле 1 не пустое тоесть имеет произвольное значение 1237544886 (
    Это нужно для того чтоб знать что данные уже проверены.
    Если данные не проверены еще а всего лишь добавлены в базу то
    поле будет пустое.)



    поле 2 имеет значение 0
    и
    поле 3 имеет значение 0

    Если одно из этих полецй имеет не 0 тогда оставлять
    строку.

    Удалять строго если поле 1 не пустое
    поле 2 меньше 10
    поле 3 меньше 1


    Если кто поможет буду очень благодарен.
    Спасибо.
     
  2. t0os

    t0os

    Регистр.:
    21 окт 2007
    Сообщения:
    284
    Симпатии:
    36
    Как я понял, вариантов для удаления 2?

    Насчет удаления по 100 записей - не парься, все нормально.

    1.
    2.
    Все это можно в один запрос объединить, если нужно.
     
    асс нравится это.
  3. pslava

    pslava

    Регистр.:
    16 май 2007
    Сообщения:
    618
    Симпатии:
    122
    Если хочешь ограничение удаления 100 записей за раз, то добавь в конце запроса limit 100.
    На запросах от t0os, это будет:
    DELETE FROM table WHERE f1 > 0 AND f2 =0 AND f3 = 0 LIMIT 100
    DELETE FROM table WHERE CHAR_LENGTH(f1)>0 AND f2<10 AND f3 <1 LIMIT 100
     
    асс нравится это.
  4. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220
    тоесть нагрузки не будет если тереть по 500 за один запрос?
    хочу на крон это реализовать все. Ато база набиваеться мусором
     
  5. t0os

    t0os

    Регистр.:
    21 окт 2007
    Сообщения:
    284
    Симпатии:
    36
    асс, будет хуже, если тереть по 100 за 5 запросов ;)
    нет, от удаления 500 за раз нагрузки не будет.
     
  6. agent_smit

    agent_smit Постоялец

    Регистр.:
    12 дек 2008
    Сообщения:
    60
    Симпатии:
    11
    Удаляют порциями записи если используют транзакции, а тем более 500 записей для мускула раз плюнуть. Удаляй одним махом и не парся.
     
  7. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    А кто вам сказал что 100 -500 строк удаляя создаст нагрузку на БД ?
     
  8. sympler

    sympler Постоялец

    Регистр.:
    24 окт 2008
    Сообщения:
    131
    Симпатии:
    6
    это не важно если сайт не особо популярный и онлайн пользователей до 10000...

    напишу как работает мускул: перед выполнением любого запроса он блокирует таблицу полностью, и все остальные пхп-скрипты будут ожидать окончания удаления 500 записей (запроса), то есть висеть в памяти, нагружая процессор и память, другое дело если пользователей 1000 а не 1000000, а если табличка большая и содержит много инфы и используется почти на каждой страничке сайта..
     
  9. agent_smit

    agent_smit Постоялец

    Регистр.:
    12 дек 2008
    Сообщения:
    60
    Симпатии:
    11
    Ну это смотря какой тип таблицы MyISAM или InnoDB
    InnoDB - если правильно использовать не лочит.
     
Статус темы:
Закрыта.