
两种可选的方式
1:使用yield的懒惰加载,示例代码如下:
123456789101112
def read_in_chunks(file_object, chunk_size=1024): """Lazy function (generator) to read a file piece by piece Default chunk size: 1k""" while True: data = file_objectread(chunk_size) if not data: break yield data f = open('really_big_filedat')for piece in read_in_chunks(f): process_data(piece)
2:使用iter和一个帮助方法:
123456
f = open('really_big_filedat')def read1k(): return fread(1024) for piece in iter(read1k, ''): process_data(piece)
推荐使用第一个。
这就是执行计划重编译和数据缓存。
可以分成两个部分解说,LZ红包也要给双份的!
执行计划简单的说就是SQL怎么读取 *** 作数据。
你这个属于基于优化的重编译(optimality-based recompilation---你可以去国外网站查这个关键词),主要是由统计信息发生改变导致(比如记录十万百万的增加)。
如果你想印证的话,可以用profiler跟踪重编译事件。
其下你可以用我这个方式测试一下你的SQL。
selectpusecounts,pcacheobjtype,pobjtype,ttext
from sysdm_exec_cached_plans p
cross apply sysdm_exec_sql_text(plan_handle) t
where pcacheobjtype='Compiled Plan' and ttext like '%dboStrText%'
and ttext not like '%dm_exec_cached_plans%'
你把上边红框里改成你那个查询的关键字
以上只是测试方法。
第二:数据缓存,这个跟时间有关系,用的是最近最少使用的数据优先清空的原理。
你可以把服务器内存整到 64G。然后配置一番,基本可以缓存多一些。
原因找到了:具体怎么做呢?
第一:如果版本可以的,你可以用索引视图
第二:分页,这个就是小块优化了!
第三:我看了一下你这个查询,可以整合到一个表中,独立建表
慢到什么程度你要检查网络连接是否稳定服务器带宽是否够用你的程序结构和数据库设计是否合理是否使用了正确的数据控件是否一次读取过多的数据了还有防火墙和杀软是否有问题还有数据运算是否存在一些错误这些错误虽然可能已经处理了,但会影响运行速度
解决方案:
1可以增加带宽解决。
2主要看什么程序读取SqlServer2000的数据,如果是应用程序的话,可以做一个中间件,先读出Sqlserver 中需要的数据,然后在进行压缩传送,在外网在解压出来。
3有可能是因为你使用的是远程直连数据库,本身通道就很耗带宽所以会很慢,建议在内网处理完成后在返回给外网。
4有肯能是数据库中的数据比较多,或者Sql比较复杂,建议,建立视图和索引加快检索速度。
5其他的貌似也没有啥要说的了,具体东西具体对待。
以上就是关于用python编程读取TXT时,数据大概有1千万条,速度很慢如何解决全部的内容,包括:用python编程读取TXT时,数据大概有1千万条,速度很慢如何解决、SQL Server 2008 SqlDataReader读取100万数据超慢,高手帮忙。、vb做的客户端程序访问远程数据库速度很慢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)