最近在做10w以上的Excel和txt的导出,业务逻辑本身的复杂性和表结构的不合理性就不提了,这里就说下在使用mysql中希望明显提高性能的要点:
1.如果你使用了存储过程或其他方式创建了临时表(temporary table)来充当中间表,记得一定要为临时表加主键(单独主键或是联合主键),
特别是通过creat temporary table xx as select ....方式,此凡是是不带主键的,你可以通过creat temporary table xx(id int primary key , name1 varchar(2)....) as select ....的方式指定主键,但如果是联合主键,我不知道如何指定,
所有我推荐后一种:在创建完成后,使用alter table xx add primary key(id1,id2),这样我也不必再创建临时表时指定字段和字段类型了,这里我必须承认主键很重要,在大数据查询和关联时性能可以显著提高
2 不建议使用过多视图或者说最好不用视图,大数据查询一旦复杂点性能显著下降,我目前没找到方法给视图加主键,网上说创建的视图是伴随着查询的主键继承来的(无证可寻),我测试如果查询的集合是后期变化生成的联合主键,就必然无法继承了,所以没有主键或说没法指定主键的视图在大数据时性能会下降(我是通过建视图和建带主键的临时表测试大数据查询的得到的结论,性能差距很大)