Как быстро добавить в таблицу больше миллиона записей? - MySQL
Формулировка задачи:
Чтобы посмотреть как будет вести себя БД в зависимости от количества записей, хочу добавить записи в таблицу для теста.
Как быстро добавить в таблицу больше миллиона записей?
Решение задачи: «Как быстро добавить в таблицу больше миллиона записей?»
textual
Листинг программы
DROP TABLE IF EXISTS pivot; DROP TABLE IF EXISTS big_table; DROP TABLE IF EXISTS attributes; * CREATE TABLE pivot ( ROW_NUMBER INT(4) UNSIGNED AUTO_INCREMENT, PRIMARY KEY pk_pivot (ROW_NUMBER) ) engine = innodb; * INSERT INTO pivot(ROW_NUMBER) SELECT NULL FROM information_schema.global_status g1, information_schema.global_status g2 LIMIT 500; * CREATE TABLE attributes( attr_id INT(10) UNSIGNED AUTO_INCREMENT, attribute_name VARCHAR(32) NOT NULL, start_date datetime, end_date datetime, CONSTRAINT pk_attributes PRIMARY KEY(attr_id) ) engine = innodb; * CREATE TABLE big_table( btbl_id INT(10) UNSIGNED AUTO_INCREMENT, attr_attr_id INT(10) UNSIGNED, record_date datetime, record_value VARCHAR(128) NOT NULL, CONSTRAINT pk_big_table PRIMARY KEY(btbl_id) ) engine = innodb; * INSERT INTO attributes( attribute_name, start_date, end_date ) SELECT ROW_NUMBER, str_to_date("20000101", "%Y%m%d"), str_to_date("20000201", "%Y%m%d") FROM pivot; * INSERT INTO big_table( attr_attr_id, record_date, record_value) SELECT p1.ROW_NUMBER, date_add(str_to_date("20000101", "%Y%m%d"), INTERVAL p2.ROW_NUMBER + p3.ROW_NUMBER DAY), p2.ROW_NUMBER * 1000 + p3.ROW_NUMBER FROM pivot p1, pivot p2, pivot p3; * CREATE INDEX idx_big_table_attr_date ON big_table(attr_attr_id, record_date);
Объяснение кода листинга программы
- DROP TABLE IF EXISTS pivot;
Удаление таблицы
pivot
при наличии в ней данных может привести к потере информации. Поэтому перед выполнением этой команды необходимо убедиться, что в таблице нет данных. - DROP TABLE IF EXISTS big_table;
Аналогично, перед выполнением этой команды необходимо убедиться, что в таблице
big_table
нет данных. - DROP TABLE IF EXISTS attributes;
Перед выполнением этой команды также необходимо убедиться, что в таблице
attributes
нет данных. - CREATE TABLE pivot
Создание таблицы
pivot
с полями ROW_NUMBER, PRIMARY KEY pk_pivot (ROW_NUMBER). - INSERT INTO pivot(ROW_NUMBER)
Вставка в таблицу
pivot
значений NULL в поле ROW_NUMBER с использованием оператора SELECT NULL FROM information_schema.global_status g1, information_schema.global_status g2 LIMIT 500. - CREATE TABLE attributes
Создание таблицы
attributes
с полями attr_id, attribute_name, start_date, end_date, PRIMARY KEY(attr_id). - CREATE TABLE big_table
Создание таблицы
big_table
с полями btbl_id, attr_attr_id, record_date, record_value, PRIMARY KEY(btbl_id). - INSERT INTO attributes(attribute_name, start_date, end_date)
Вставка в таблицу
attributes
значений ROW_NUMBER, str_to_date(20000101
,%Y%m%d
), str_to_date(20000201
,%Y%m%d
) соответственно. - INSERT INTO big_table(attr_attr_id, record_date, record_value)
Вставка в таблицу
big_table
значений ROW_NUMBER, date_add(str_to_date(20000101
,%Y%m%d
), INTERVAL ROW_NUMBER + ROW_NUMBER DAY), ROW_NUMBER * 1000 + ROW_NUMBER. - CREATE INDEX idx_big_table_attr_date ON big_table(attr_attr_id, record_date);
Создание индекса idx_big_table_attr_date на поля attr_attr_id и record_date таблицы
big_table
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д