how to split the order table by day
When we store the order data in the database, the database will be bigger and bigger, so we should store the data day by day.
The database sql is as follow:
how to split the order table by day
1, create procedure to create intraday order table:
DELIMITER //
DROP PROCEDURE IF EXISTS proc_test_date //
CREATE PROCEDURE proc_test_date(IN cur_date_var VARCHAR(20))
BEGIN
SET @date_temp = CONCAT('CREATE TABLE IF NOT EXISTS test_date_', cur_date_var, ' LIKE tb_test3');
SELECT @date_temp;
PREPARE stat_temp FROM @date_temp;
EXECUTE stat_temp;
DEALLOCATE PREPARE stat_temp;
END //
DELIMITER ;
DELIMITER //
DROP PROCEDURE IF EXISTS proc_test_date2 //
CREATE PROCEDURE proc_test_date2()
BEGIN
DECLARE cur_date_var VARCHAR(20);
SET cur_date_var = DATE_FORMAT(CURDATE(), '%Y%m%d');
CALL proc_test_date(cur_date_var);
END //
DELIMITER ;
CALL proc_test_date2();
2, crete event to call procedure every day
CREATE EVENT event_test
ON SCHEDULE EVERY 1 DAY
DO
CALL proc_test_date2();
SHOW EVENTS;
3,create procedure to insert data
DELIMITER //
DROP PROCEDURE IF EXISTS proc_insert_order //`Events`
CREATE PROCEDURE proc_insert_order(IN u VARCHAR(20), IN p VARCHAR(20))
BEGIN
DECLARE cur_date_var VARCHAR(20);
SET cur_date_var = DATE_FORMAT(CURDATE(), '%Y%m%d');
SET @queryVar = CONCAT('insert into test_date_', cur_date_var , ' (username, password) values (\'' ,u ,'\',\'' ,p ,'\')');
SELECT @queryVar;
PREPARE query_temp FROM @queryVar;
EXECUTE query_temp;
DEALLOCATE PREPARE query_temp;
END //
DELIMITER ;
CALL proc_insert_order("water11", "pass11");
4,create procedure in query data
DELIMITER //
DROP PROCEDURE IF EXISTS proc_query_order //
CREATE PROCEDURE proc_query_order()
BEGIN
DECLARE cur_date_var VARCHAR(20);
SET cur_date_var = DATE_FORMAT(CURDATE(), '%Y%m%d');
SET @queryVar = CONCAT('select * from test_date_', cur_date_var);
PREPARE query_temp FROM @queryVar;
EXECUTE query_temp;
DEALLOCATE PREPARE query_temp;
END //
DELIMITER ;
CALL proc_query_order();
differen between index and key:
CREATE INDEX index_user
ON tb_test7 (username)
CREATE TABLE tb_test7(
id INT(11),
username VARCHAR(60),
PASSWORD VARCHAR(60),
PRIMARY KEY (id),
KEY index_user (username)
)
浙公网安备 33010602011771号