나는 테이블이있다
| base_schedule_line_items | CREATE TABLE
base_schedule_line_items
(
id
int (10) unsigned NOT NULL AUTO_INCREMENT,
installment
int (10) unsigned NOT NULL,
on_date
date NOT NULL,
actual_date
date DEFAULT NULL,
payment_type
int (11) NOT NULL,
scheduled_principal_outstanding
decimal (65,0) NOT NULL,
scheduled_principal_due
decimal (65,0) NOT NULL,
scheduled_interest_outstanding
decimal (65,0) NOT NULL,
scheduled_interest_due
decimal (65,0) NOT NULL,
currency
int (11) NOT NULL,
updated_at
datetime NOT NULL DEFAULT '2013-01-06 14:29:16',
created_at
datetime NOT NULL DEFAULT ' 2013-01-06 14:29:16 ',
loan_base_schedule_id
int (10) unsigned NOT NULL,
lending_id
int (10) unsigned NOT NULL,
reschedule
tinyint (1) DEFAULT'0 ',
PRIMARY KEY (id
),
KEYindex_base_schedule_line_items_loan_base_schedule
(loan_base_schedule_id
), KEYindex_bslt_spd
(scheduled_principal_due
),
키index_bslt_lending
(lending_id
)
KEYindex_bslt_actualdate
(actual_date
)
KEYindex_bslt_spsila
(loan_base_schedule_id
,scheduled_principal_due
,scheduled_interest_due
,actual_date
)
KEYindex_bslt_ondate
(on_date
)
KEYindex_bslt_oa
(on_date
,actual_date
)
KEYindex_bslt_ol
(on_date
,loan_base_schedule_id
)
KEYindex_bslt_oli
(on_date
,lending_id
)
) ENGINE = 이노 AUTO_INCREMENT = 30,410,126 DEFAULT CHARSET = UTF8 |
이제이 테이블에 3 천만 개의 레코드가 있으므로 여기에 두 개의 인덱스를 추가해야하며 추가하는 데 몇 년이 걸리는 것처럼 보입니다.
base_schedule_line_items 테이블을 변경 인덱스 추가 index_bslt_sla (scheduled_principal_due, actual_date, lending_id);
alter table base_schedule_line_items 인덱스 추가 인덱스 index_bslt_ssla (scheduled_principal_due, scheduled_interest_due, lending_id, actual_date);
아래 언급 된 쿼리를 사용하여 테이블 크기를 확인했습니다.
SELECT table_name AS "Tables", round ((((data_length + index_length) / 1024/1024), 2) "MB 크기"from information_schema.TABLES WHERE table_schema = "my_database_name";
결과는
base_schedule_line_items | 20111.00
나는 이것을 사용하여 데이터 길이를 계산하고 인덱스 길이를 생략했습니다.
SELECT table_name AS "Tables", round ((((data_length) / 1024 / 1024), 2) "MB 크기"FROM information_schema.TABLES WHERE table_schema = "my_database_name";
결과는
base_schedule_line_items | 9497.00
인덱스
KEY index_bslt_actualdate (actual_date)
KEY의 index_bslt_spsila (loan_base_schedule_id, scheduled_principal_due, scheduled_interest_due, actual_date)
KEY의 index_bslt_ondate (ON_DATE)
KEY의 index_bslt_oa (ON_DATE, actual_date)
KEY의 index_bslt_ol (ON_DATE, loan_base_schedule_id)
KEY의 index_bslt_oli (ON_DATE, lending_id)
나에 의해 추가되었지만, 나는 확실하지 않거나 다른 지수가 어떤 목적으로 추가 되었는가. 이것은 상당히 큰 응용 프로그램입니다. 이제 select 문을 사용하여 보고서를 추출하는 데 도움이되는 위에서 언급 한 두 개의 인덱스를 추가해야하며 추가하기가 매우 어렵습니다. 어떤 도움이라도 대단히 감사하겠습니다.