导出代码如下:
SELECT *
FROM (SELECT t1.*],t3.药品进价,ROW_NUMBER() OVER(ORDER BY 药品进价 asc ) AS rn
FROM dbo.[住院药品201106-201206] AS t1
LEFT JOIN dbo.[药品出库(201105-201306)] AS t3
ON t1.药品名称 = t3.药品名称
And t1.规格 = t3.规格
AND t1.代码 = t3.代码) AS tt
WHERE tt.rn < 800000
药品出库(10W记录) 表有非聚集索引 ,药品名称,规格,代码是键列,包含药品进价;
药品进价单独也有有索引 升序;
住院药品201106-201206(700多W记录) ,表有聚集索引,药品名称,规格,代码是键列;
现在任务是要导出到Excel2007里,并按药品进价升序排列,因为Excel每个文件最大只能100w记录,
所以必须分段导出到多个文件。
现在的查询执行3分多钟还没有结果,大家觉得我的思路对吗?有没有好点的方法。求助啊~~!
执行计划如下:
大数据 Excel
------解决方案--------------------
用临时表试试看,生成的临时表排序加索引,然后再根大表关联
------解决方案--------------------
不知道你的机器性能什么样?那么多数据查询3分钟不出也不奇怪。
建议你对这个表“住院药品201106-201206”的查询条件重新考虑,把它分成四五个视图,当然每个视图的记录不能有重复,然后分别与表“药品出库”关联查询再导出到Excel
------解决方案--------------------
用Excel2007及以上版本即可..
------解决方案--------------------
你这SQL查询,跟是否使用ADO.net完全无关呀
可以Top 80000 ... Order By Price Desc
------解决方案--------------------
如果一定要用excel格式的话,好像不行。必须分几个导
------解决方案--------------------
那就将结果存入固定表,并附加序列栏,再根据序列产生N个表喽