从SQL获取1000万条记录的有效方法
我在SQL Server中有一个表,需要将其数据导出到.CSV文件中 以下是表格的详细信息:从SQL获取1000万条记录的有效方法,sql,sql-server,Sql,Sql Server,我在SQL Server中有一个表,需要将其数据导出到.CSV文件中 以下是表格的详细信息: ProductId: PK, bigint SupId: varchar(100) CatalogId: FK, bigint Price: float 没有索引 CSV部分已经完成,这意味着我已经尝试了几个库,可以将结果集写入CSV 我被卡住的地方是SELECT*需要很长时间才能执行 到目前为止,我在跑步方面没有任何成功 SELECT * FROM 现在,我知道运行SELECT*是一个非常糟糕的
ProductId: PK, bigint
SupId: varchar(100)
CatalogId: FK, bigint
Price: float
没有索引
CSV部分已经完成,这意味着我已经尝试了几个库,可以将结果集写入CSV
我被卡住的地方是SELECT*需要很长时间才能执行
到目前为止,我在跑步方面没有任何成功
SELECT * FROM
现在,我知道运行SELECT*是一个非常糟糕的主意,我已经读了很多帖子
是否有一种方法可以流式传输或部分获取数据?这是C的人在问,所以请原谅这个行话
那么,我应该阅读/学习什么
如何从SQL中获取此类数据
注意。Microsoft SQL Server的大容量复制bcp命令使您能够直接从命令行插入大量记录
bcp mydb.dbo.mytable out "C:\mytable.csv" -c -T
更多:
编辑
您也可以在sql执行中使用bcp
bcp "SELECT * FROM mydb.dbo.mytable t1 join mydb.dbo.anothertbl t2 on (t1.id=t2.mytable_id)" QUERYOUT C:\mytable.csv -c -T
这在很大程度上取决于
a你的桌子是什么样子的
b你有什么样的索引
c您的查询是什么样的,以及
d您的硬件服务器支持什么
这个问题太宽泛了,无法回答
这个表有多少行和哪些列?您真的需要表中的所有列SELECT*和所有行no WHERE子句吗?如果您真的需要该表中的所有内容,那么确实没有神奇的方法来加速聚集索引扫描
但一定要尝试使用锁。
当用户访问数据时,数据会被锁定,以便其他用户无法修改或删除有人正在读取的数据
使用NOLOCK从系统字母intid中选择*
这其中有几个因素。快速列出要查看的内容:
服务器的速度。CPU、内存、网络连接都将
成为因素
如果您使用条件执行SELECT语句,即使用
如果有一个或多个连接,则具有索引将提高您的性能
性能,尤其是在有数百万行的表上。哈希表
将在一张大桌子上做一个巨大的净正片。
编写干净的查询。例如,如果您有一个很大的项目列表
您需要从查询中排除,执行左连接而不是
使用一个不在状态的机器。
这实际上只是冰山一角,但一些最容易实现的功能也将为您提供一些最大的性能提升。提供您的表结构和为其创建的当前索引。mysql、oracle、sql server或postgres?从何处选择*您应该查看bcp实用程序:。