Кой е по-бързият начин за изтриване на стари записи

Имам таблица с около 35 милиона реда. всяка има около 35 цели числа и една времева стойност (последна актуализация) Таблицата има два индекса Първичен - използва две цели числа от колоните на таблицата Вторичен - използва 1-вото цяло число от първичния + друга цяло число стойност.

Бих искал да изтрия стари записи (около 20 милиона от тях) според полето за дата.

Кой е най-бързият начин: 1. Изтриване както е според полето за дата? 2. Създайте друг индекс по дата и след това изтрийте по дата.

Ще има еднократно изтриване на голяма част от данните и след това постепенно седмично изтриване на много по-малки части.

Има ли друг начин да го направите по-ефективно?


person Nir    schedule 08.08.2010    source източник


Отговори (3)


може да е по-бързо да създадете нова таблица, съдържаща редовете, които искате да запазите, да премахнете старата таблица и след това да преименувате новата таблица

person Chris Card    schedule 08.08.2010
comment
Отлична идея! Ще пусна тест на компютър за разработчици, за да видя как работи. - person Nir; 08.08.2010

За седмични изтривания индекс в полето за дата би ускорил нещата.

person Mchl    schedule 08.08.2010

Най-бързият (но не и най-лесният) - според мен - е да поддържате вашите записи сегментирани в множество таблици въз основа на дата, напр. дадена седмица и след това да имате обединена таблица на всички тези таблици за редовните заявки в цялото нещо (така че вашите заявки да бъдат непроменени). Всяка седмица ще създавате нови таблици и ще предефинирате обединителната таблица.

Когато желаете да премахнете стари записи, вие просто създавате отново обединителната таблица, за да оставите записите в старите таблици навън, и след това премахнете тези, които са оставени (не забравяйте да отрежете, преди да премахнете, в зависимост от вашата файлова система). Това е може би най-бързият начин да стигнете до там с MySQL.

Все пак бъркотия за справяне :)

person Hans-Henrik Stærfeldt    schedule 16.05.2013