Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从SQL获取1000万条记录的有效方法_Sql_Sql Server - Fatal编程技术网

从SQL获取1000万条记录的有效方法

从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*是一个非常糟糕的

我在SQL Server中有一个表,需要将其数据导出到.CSV文件中

以下是表格的详细信息:

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实用程序:。