Как лучше сделать....

Cramac

Новичок
Как лучше сделать....

Всем привет. Подскажите в таком вопросе.
Есть в MySQL таблица в ней данные, каждая страка имеет срок давности. Как лучше сделать скрипт, который будет обходить все эти данные и смотреть, если срок не истек, то пропускает иначе переносит в другую таблицу.

Как лучше организовать обход? Если строк будет 100т - 500т то запуская каждые 5 минут скрипт, сервер не загнется?
 

DimbIch

Новичок
SELECT * FROM WHERE УСЛОВИЕ переноса....
по другому никак не выбрать...
делай оптимизацию таблиц...
индексацию...
чтобы меньше времени занимал запрос...
выбирай не * а поля которые надо и сделай по ним индекс
 

netdog

net @
Не загнётся.. Да и смотря что там за таблица и сколько в ней записей... Но скорее всего не загнётся...
И что это за срок давности такой 100т ?
что это за еденица такая "т"

-~{}~ 02.11.04 20:10:

чтобы меньше времени занимал запрос...
выбирай не * а поля которые надо и сделай по ним индекс
индекс нужен для полей которые используются для поиска, тобишь для поля "срока давности" а на всех он нафик сдался...
 

Cramac

Новичок
100т-500т имелось ввиду строк. каждая строка имеет около 10-15 полей.
 

netdog

net @
Ну такая табличка обработается майскулем скорее всего меньше чем за 1 секунду ;)
 

DimbIch

Новичок
Net Dog
нууу... не уверен :))
хотя не тестил такие огромный базы :)
 

netdog

net @
Net Dog
нууу... не уверен )
хотя не тестил такие огромный базы
Ну так че говоришь если не тестил. Это конечно зависит ой как от многих факторов..
В частности размера самой таблицы, индексов нужных полей, самого железа сервака.
Для примера вот такой совсем простой селект
SELECT * FROM traff WHERE IP>50725125 and IP<50725135;
и заблицы в которой 1.5 лимона записей, майсуль справился за 0.01с
Этот запрос вывел 1002 строки.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Net Dog
Для примера вот такой совсем простой селект
SELECT * FROM traff WHERE IP>50725125 and IP<50725135;
и заблицы в которой 1.5 лимона записей, майсуль справился за 0.01с
Этот запрос вывел 1002 строки.
ты ещё забыл указать длину в сантиметрах.
 

Cramac

Новичок
А если робот быдет обходить такое колличество строк, при этом он будет делать операцию по вычислению срока жизни строки, то как будет с нагрузкой?

Т.е. в строке есть 2 параметра дата добавления и срок жизни. Если робот будет каждую строку брать и вычислять не истек ли срок и если истек то переносить в другое место, иначе идти дальше. И такое каждые 5 минут, то как поведет себя мускуль?
 

Фанат

oncle terrible
Команда форума
а зачем делать каждые 5 минут?
почему не делать, как все - раз в сутки ночью?
 

Cramac

Новичок
Originally posted by Фанат
а зачем делать каждые 5 минут?
почему не делать, как все - раз в сутки ночью?
А если срок истек в 10 часов утра? или в 17 часов?
Строки должны убиратся из таблици как можно быстрее, т.е. 5-10 минут терпимо, но никак не день.

-~{}~ 03.11.04 20:18:

или можно было бы в отдельной таблице сделать время, в которое определенная строка должна удалится. Но как запускать робота именно в это время(запустить в то время, которое указано в базе)?
 

Cramac

Новичок
Originally posted by Frol
Cramac
каждый час-два-три подойдет?
Это уже не подойдет. Чем раньше, тем лучше

-~{}~ 03.11.04 20:47:

Просто если после окончания срока, строку не удалить, то срок просто теряет свой смысл.
 

Фанат

oncle terrible
Команда форума
А если срок истек в 10 часов утра? или в 17 часов?
Да хоть месяц назад истек.
И что? Какая в этом беда?

-~{}~ 03.11.04 21:15:

Просто если после окончания срока, строку не удалить, то срок просто теряет свой смысл.
Извините, мы о базе данных говорим? SQL? информация из которой извлекается с помощью SQL-запросов?
или об экскаваторе? Который сколько взял - столько взял - ковш на три кубометра?
 

Cramac

Новичок
Originally posted by Фанат
Да хоть месяц назад истек.
И что? Какая в этом беда?

-~{}~ 03.11.04 21:15:


Извините, мы о базе данных говорим? SQL? информация из которой извлекается с помощью SQL-запросов?
или об экскаваторе? Который сколько взял - столько взял - ковш на три кубометра?
Возмите тот же авто ру, разместив объявление админы никак не захотят чтоб объява висела дольше положенного. У них можно и раз в день запускать, а у меня срок более точен.
 

Фанат

oncle terrible
Команда форума
Cramac
а что - сделать так, чтобы объява не выводилась, можно только физически удалив строку?
больше никак?

А с базой можно работать только запросом
SELECT * FROM TABLE
и других не бывает?
 

Фанат

oncle terrible
Команда форума
СТОП.
Я разговариваю с девочкой или с программистом?
Ты определись, пожалуйста, и я, в зависимости от этого продолжу.
Если ты программист, перед которым стоит проблема, тебе дали простой и понятный ответ.
Если ты девочка, которая сама не знает, чего хочет - поищи себе другое место, где ты будешь вертеть хвостом.

Задача была, чтобы объявление выводилось только тогда, когда надо.
Тебе ее решили.
Теперь у тебя новые капризы.
НЕ НРАВЯТСЯ ПУСТЫЕ СТРОКИ?
Запускай по крону каждые пять минут, и пусть твой сервер загнется.
ЕЩЕ ВОПРОСЫ ЕСТЬ?
 
Сверху