CREATE DEFINER=`root`@`localhost`PROCEDURE`insert_test_data`() BEGIN DECLARE i INTDEFAULT413241; WHILE i DO INSERTINTO test_table (name, value) VALUES (CONCAT('test_name_', i), i); SET i = i + 1; ENDWHILE; END
执行存储过程:
call insert_test_data();
为日期字段赋值,值为随机值:
update test_table t SET t.create_time = ( SELECTDATE_SUB(NOW(), INTERVALFLOOR(RAND() * 1000000) SECOND) WHERE create_time ISNULL )
以上脚本执行完毕后,测试数据插入完毕。
执行分析语句,可以看到查询表完整数据,实际会花费3303毫秒。
explainanalyzeselect * from test_table;
现在新建一张相同字段的测试表:
CREATETABLE m_test_table LIKE test_table;
将表的引擎改为memory:
往新的测试表中插入数据:
INSERTINTO m_test_table SELECT * FROM test_table;
在这一步,可能会报“
The table 'm_test_table' is full
”这个错误。这是因为系统默认给内存表分配的空间大小是16M,可以通过更新配置的方式,调整这个大小。