У мене стіл
| 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
десяткова (65,0) NOT NULL,
scheduled_interest_due
десяткова (65,0) NOT NULL,
currency
int (11) NOT NULL,
updated_at
datetime NOT NULL DEFAULT '2013-01-06 14:29:16', time date
created_at
NOT NULL DEFAULT ' 2013-01-06 14:29:16 ',
loan_base_schedule_id
int (10) без підпису NOT NULL,
lending_id
int (10) без підпису 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 = InnoDB AUTO_INCREMENT = 30410126 DEFAULT CHARSET = utf8 |
Тепер ця таблиця містить 30 мільйонів записів, мені потрібно додати ще два індекси до цього, і як би потрібні роки, щоб його додати.
змінити таблицю base_schedule_line_items додати індекс index_bslt_sla (raspored_principal_due, фактичний_даний, кредитування_id);
змінити таблицю base_schedule_line_items додати індекс index_bslt_ssla (raspored_principal_due, запланований_interest_due, lending_id, фактичний_date);
Я використовував нижчезазначений запит, щоб дізнатися розмір таблиці
ВИБІРТЕ Ім'я_матеріалу AS "Таблиці", круглі (((data_length + index_length) / 1024/1024), 2) "Розмір у МБ" ВІД_інформації__схеми.TABLES WHERE table_schema = "my_database_name";
Результат вийшов як
base_schedule_line_items | 20111.00
Я використовував це лише для того, щоб обчислити довжину даних і залишив відстань індексу
ВИБІРТЕ ім'я таблиці_АС "Таблиці", круглі (((data_length) / 1024/1024), 2) "Розмір у МБ" ВІД інформації_схеми.TABLES WHERE table_schema = "my_database_name";
і результат був
base_schedule_line_items | 9497.00
Індекси
KEY index_bslt_actualdate (фактичний_date),
KEY index_bslt_spsila (заимствование_базы_схедуле_ид, заплановано_принцип_дуе, заплановано_интерес_дуе, фактично_даче),
КЕЙ індекс_бсл_ондате (он_дате),
КЕЙ індекс_бсл_оа (on_dete, дата_да ,
_да ,_да ,_да ,
_да ,_да ,_да , _да ,_да , _да ,_да ,_да , _да ,_да ,_да , _да ,_да , _да ,_да ,_да , _да ,_да ,_да , _да ,_да , _да ,_да ,_да , _да ,_да ,_да , _да ,_да , _да ,_да ,_да , _да ,_да ,_да , _да ,_да , _да ,_да ,_да , _да ,_да ,_,)
були додані мною, але я не знаю, з якою метою були додані інші індекси. Це досить велике застосування. Тепер мені потрібно додати ці два згадані вище індекси, оскільки вони допомагають мені витягувати звіт за допомогою оператора select, і мені важко їх додати. Будь-яка допомога буде дуже вдячна