MYSQL临时表创建索引

时间:2021-11-01 11:41:56

DROP TEMPORARY TABLE IF EXISTS tmp_record_t2;
CREATE TEMPORARY TABLE tmp_record_t2
(
consumption_id INT(11) UNSIGNED NOT NULL,-- 店铺ID
created_org INT,
return_money DECIMAL(11,2),-- 退菜金额
cash DECIMAL(11,2),-- 现金
member_card DECIMAL(11,2),-- 会员卡
bank_card DECIMAL(11,2),-- 银行卡
credit DECIMAL(11,2),-- 挂账
free DECIMAL(11,2),-- 免??
ticket DECIMAL(11,2),-- 票券
foregift DECIMAL(11,2), -- 订金
wxzf DECIMAL(11,2), -- 微信支付
KEY pk(consumption_id) -- 创建索引,这个在临时表关联的时候非常重要,可以提高速度10倍
)ENGINE=MEMORY DEFAULT CHARSET=utf8 ;

tablestr2为动态的语句,将结果插入到临时表

SET @exe_sql = CONCAT('INSERT INTO tmp_record_t2 ',@tablestr2);
PREPARE stmt FROM @exe_sql ;
EXECUTE stmt ;

临时表默认的方式是 MyISAM

但是 MEMORY比MyISAM快大概20%。 所以指定MEMORY方式

参考:http://wenku.baidu.com/link?url=h1rkLZdfavLLboTr9jph_l5MGcxyj5_E9f2tXss-l8ZWCvlvHIOuqu5N1qlvfwwdctDYQ7FqY9G7iZwQXV78oK0rorE7DTXIEwna3Dp5aqK