1.问题背景:前台页面用表格展示了数据,还要支持将数据导出为EXCEL文件。 查询数据库有时很慢(比如时间范围大[2年],sql语句执行时间差不多220s)一般是导出的数据是重新查询数据库还是可以直接把前台得到的数据传给PHPExcel做处理? 感谢每一个回答者。PS:sql语句优化尽力了(索引分区做了 多表有的表数据300w条),如果查询一周执行时间1.6s左右,查几年就得几分钟了。
ringa_lee
html 表格可以直接导出为xlsx;
如果不使用1,那么前端展示数据前,将获取的数据缓存起来,导出时可以发送回后端而不需要再次数据库操作;
2 的前提是,数据量在前后端通信可以接受的范围内(比如超过50MB 就属于过大了),牺牲通信的消耗换取数据库的消耗。
实际上js是有可以处理excel的插件的,不过你前台的数据不还是从后台拿到的吗
js的excel插件,百度都有一堆 比如 exceljs
有些mysql管理软件,比如navicat可以直接把数据库导出成为excel,不一定非得用php才能导出,虽然我世界上最好的语言什么都能实现,但是你也要考虑下其他东西也能实现
個人不太支持將數據重新向後台調取,你或者可以向樓上那樣直接html到導出excel,當然你可以後台處理,不過你在顯示數據在html同時,將數據緩存到服務器,假如輸出excel直接從緩存區讀出數據再輸出excel
一般导出数据到EXCEL都是后端操作,这里用户会选择一定的条件进行数据的导出。后端如果比较耗时可以采用异步任务来处理。
题主我想了解一下导出数据是导出所有数据吗?还是可以选择时间范围呢?如果是导出所有的,可以在后台跑定时任务,选择客户量少的时候,比如夜里去后台去一下所有的数据,然后前段导出的时候直接拿就好了,定时任务每天还要定时检查该数据是否为最新的
html 表格可以直接导出为xlsx;
如果不使用1,那么前端展示数据前,将获取的数据缓存起来,导出时可以发送回后端而不需要再次数据库操作;
2 的前提是,数据量在前后端通信可以接受的范围内(比如超过50MB 就属于过大了),牺牲通信的消耗换取数据库的消耗。
实际上js是有可以处理excel的插件的,不过你前台的数据不还是从后台拿到的吗
js的excel插件,百度都有一堆 比如 exceljs
有些mysql管理软件,比如navicat可以直接把数据库导出成为excel,不一定非得用php才能导出,虽然我世界上最好的语言什么都能实现,但是你也要考虑下其他东西也能实现
個人不太支持將數據重新向後台調取,你或者可以向樓上那樣直接html到導出excel,當然你可以後台處理,不過你在顯示數據在html同時,將數據緩存到服務器,假如輸出excel直接從緩存區讀出數據再輸出excel
一般导出数据到EXCEL都是后端操作,这里用户会选择一定的条件进行数据的导出。后端如果比较耗时可以采用异步任务来处理。
题主我想了解一下导出数据是导出所有数据吗?还是可以选择时间范围呢?如果是导出所有的,可以在后台跑定时任务,选择客户量少的时候,比如夜里去后台去一下所有的数据,然后前段导出的时候直接拿就好了,定时任务每天还要定时检查该数据是否为最新的