在我们的ASP应用程序中,我们将一些数据从客户插入到我们的数据库中,该数据库位于Web服务器中。从客户一次只插入一行。下面是表的结构,所有列都已填充。从应用程序插入数据时,由于表具有大量列,因此速度变慢。仅Report
列将包含大约20000到30000个字符的文本。所以我认为它可能会导致数据缓慢插入到表中,这可能会导致我的Web服务器性能下降。那么将数据插入到下面的表中的最佳方法是什么。现在我们只使用普通的SQL插入命令并插入行。有没有更好的方法可以使插入语句更快更有效地处理大量数据?
CREATE TABLE [Customer](
[id] [int] IDENTITY(2310,1) NOT NULL,
[slno] [nvarchar](50) NULL,
[onDate] [nvarchar](50) NULL,
[onTime] [nvarchar](50) NULL,
[ip] [nvarchar](255) NULL,
[custName] [nvarchar](max) NULL,
[custAddr] [nvarchar](max) NULL,
[custCity] [nvarchar](max) NULL,
[custPIN] [nvarchar](50) NULL,
[custEmail] [nvarchar](max) NULL,
[custTele] [nvarchar](255) NULL,
[contactPer] [nvarchar](max) NULL,
[batch] [nvarchar](50) NULL,
[Report] [nvarchar](max) NULL,
[PC] [nvarchar](255) NULL,
[oldkey] [nvarchar](255) NULL,
[Office] [bit] NULL,
[frameWorkVersion] [nvarchar](255) NULL,
[keys] [nvarchar](255) NULL,
[OSversion] [nvarchar](255) NULL,
[Res] [nvarchar](255) NULL,
[Version2] [nvarchar](255) NULL,
[Version1] [nvarchar](255) NULL,
[EXEVersion] [nvarchar](255) NULL,
[processorSpeed] [nvarchar](255) NULL,
[RAM] [nvarchar](255) NULL,
[SYSTEM] [nvarchar](255) NULL,
[SYSTEMNAME] [nvarchar](255) NULL,
[HOSTNAME] [nvarchar](255) NULL,
[PCUSER] [nvarchar](255) NULL,
[FeatureCount] [nvarchar](max) NULL,
[IsRegistered] [nvarchar](255) NULL,
[Info1] [nvarchar](255) NULL,
[OtherInfo] [varchar](8000) NULL,
[WorkGroup] [varchar](255) NULL,
[CustMainPhone] [varchar](255) NULL,
CONSTRAINT [PK_downloadexe_errlog] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
答案 0 :(得分:0)
您可能希望查看表格直接模式 http://blog.ropardo.ro/2011/05/17/parametrized-queries-vs-table-direct-mode-sql-server-ce/
甚至更好,使用批量插入 http://visualstudiomagazine.com/articles/2013/03/01/effective-use-of-sql-bulk-insert.aspx
答案 1 :(得分:0)
您没有显示任何其他索引吗?
对于大量数据,它可能只是一个量级的东西。 您可以在一个语句中插入多行
values (), ()
一次太多行然后它可以减慢
将行*列保持在1000下
所以一次尝试20行
答案 2 :(得分:0)
如果表上有索引,请遵循以下模式:
答案 3 :(得分:-1)
尝试制作一些
commit;
插入行时的,例如每20行或50行。