Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];

Вниз

увеличение скорости удаления данных   Найти похожие ветки 

 
alsov ©   (2006-12-19 09:58) [0]

Приветствую, Мастера

Помогите пожалуйста увеличить скорость уделения данных из таблиц.

Есть примерно такие 2 таблицы


CREATE TABLE m_user (
 user_id NUMBER(10) NOT NULL PRIMARY KEY,
 start_date DATE NULL,
 finish_date DATE NULL
)
/

CREATE TABLE m_user_value (
 user_id NUMBER(10) NOT NULL,
 param_id NUMBER(10) NOT NULL,
 param_value number NOT NULL
)
/

ALTER TABLE m_user_value
 ADD CONSTRAINT pk_m_user_value PRIMARY KEY (
   param_id,
   user_id
 )
/  

ALTER TABLE m_user_value
 ADD CONSTRAINT FK_m_user_value_m_user FOREIGN KEY (user_id)
 REFERENCES m_user (user_id)
/


В таблице m_user около 2 миллионов записей, в m_user_value около 4-х.

Нужно удалить из них данные, при которых удалиться около половины записей m_user и соответственно их значений из m_user_value.

Делаю так

DELETE
 FROM m_user_value
WHERE user_id IN (SELECT user_id FROM m_user WHERE start_date > To_Date("01012001", "ddmmyyyy"));

DELETE
 FROM m_user
WHERE start_date > To_Date("01012001", "ddmmyyyy");


При этом запросы выполняются около 4-х часов (пень4 2,4 + гектар оперативы ора10g).

Возможно ли как-либо ускорить этот процесс? Индексы например поотключать или еще чего.


 
Ega23 ©   (2006-12-19 10:00) [1]

Я бы попробовал наложить на свяску директиву On Delete Cascade
Ну и индексы поотключать - тоже можно попробовать.


 
alsov ©   (2006-12-19 10:09) [2]


> Я бы попробовал наложить на свяску директиву On Delete Cascade

А это как? Вы имеете в виду в констрейне?


 
Кщд ©   (2006-12-19 10:12) [3]

при таких %%-ом содержании удаляемых и нечастой необходимости операции
create table tmp as select * from  m_user where...;
truncate table m_user;
insert into m_user (select * from tmp);
drop table tmp;

скорректировать с учетом constraint m_user_value


 
Кщд ©   (2006-12-19 10:15) [4]

alsov ©   (19.12.06 10:09) [2]

нечто типа:
alter table m_user_value
 add constraint FK_m_user_value_m_user foreign key (user_id)
 references m_user(user_id) on delete cascade


 
Desdechado ©   (2006-12-19 10:46) [5]

Если такое часто приходится делать, то имеет смысл секционировать таблицу PARTITION BY RANGE( start_date ).
Секции удаляются быстрее в разы.


 
alsov ©   (2006-12-19 11:20) [6]


> Если такое часто приходится делать, то имеет смысл секционировать
> таблицу PARTITION BY RANGE( start_date ).


Делается не часто.


> create table tmp as select * from  m_user where...;truncate
> table m_user;insert into m_user (select * from tmp);drop
> table tmp;скорректировать с учетом constraint m_user_value


Попробую


 
alsov ©   (2006-12-19 12:30) [7]

сделал так
есть возможность сделать флаг пометки на удаление и удалять по нему
в результате получилось

DELETE
FROM m_user_value
WHERE flag="1";

DELETE
FROM m_user
WHERE flag="1";


 
alsov ©   (2006-12-19 12:32) [8]

всем спасибо



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.105 c
10-1130594049
sanich__
2005-10-29 17:54
2007.03.18
AcroPDF


2-1172060356
Raptoridze
2007-02-21 15:19
2007.03.18
добавить пункт меня


2-1172487297
Bogdan1024
2007-02-26 13:54
2007.03.18
АКФ


15-1172267382
ArtemESC
2007-02-24 00:49
2007.03.18
Программа для тесттирования правил дорожного движения...


3-1167045552
tytus
2006-12-25 14:19
2007.03.18
10g Express edition & DOA 4.0.7 - проблема с коннектом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский