我正在开发一个小型应用程序,它在SQL Server数据库中包含大约50万行。
这些行包含产品的详细信息,这些产品具有唯一的条形码,需要在发货前进行扫描。
每当用户使用我的应用程序扫描产品上的条形码时,记录会更新,例如用户扫描的详细信息,扫描时间和扫描标记会在表格中更新。
我的数据库中有两个表。用户详细信息和产品详细信息,包含条形码值和用户详细信息。
我使用C#命令执行SQL更新命令。
问题是多个用户一次访问该表并影响性能。
我想知道是否应该使用SQL更新或将用户详细信息插入到新表中。哪个会更快?
用户可以看到扫描详细信息,例如每小时的计数,每个产品的扫描计数。完成和未决计数产品明智。
验证,如果没有再次扫描相同的条形码或条形码无效。
请建议数据结构以获得更好的性能。
用于更新的代码:
using (SqlConnection connection = new SqlConnection(connectString))
using (SqlCommand command = connection.CreateCommand())
{
command.CommandText = "update [DispatchData] set [Scan]=@scan,[ScanBy]=@scanBy,[ScanTime]=getdate() where [RunningSequence]=@runSeq";
command.Parameters.AddWithValue("@scan", "Y");
command.Parameters.AddWithValue("@ScanBy", username_form);
command.Parameters.AddWithValue("@runSeq", textBox2.Text);
connection.Open();
command.ExecuteNonQuery();
listView2.Items.Add(listView1.Items[0].Text);
listView1.Items[0].Remove();
connection.Close();
}
表格格式
CREATE TABLE [dbo].[DispatchData](
[srno] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
[RefNo] [nvarchar](50) NOT NULL,
[RunningSequence] [nvarchar](50) NOT NULL,
[FileName] [nvarchar](500) NOT NULL,
[ActNo] [nvarchar](50) NOT NULL,
[imp] [numeric](18, 0) NOT NULL,
[CustId] [nvarchar](50) NOT NULL,
[CustPhone] [nvarchar](50) NULL,
[CustFax] [nvarchar](50) NOT NULL,
[CustName] [nvarchar](150) NOT NULL,
[Add1] [nvarchar](150) NULL,
[Add2] [nvarchar](150) NULL,
[Add3] [nvarchar](150) NULL,
[City] [nvarchar](50) NULL,
[State] [nvarchar](50) NULL,
[Country] [nvarchar](50) NULL,
[Pincode] [nvarchar](50) NULL,
[BrCode] [nvarchar](50) NOT NULL,
[BrCat] [nvarchar](50) NOT NULL,
[ActType] [nvarchar](50) NOT NULL,
[DispatchMode] [nvarchar](50) NULL,
[QC] [char](1) NOT NULL CONSTRAINT [DF_DispatchData_QC] DEFAULT ((0)),
[UserName] [nvarchar](50) NOT NULL,
[misFileName] [nvarchar](200) NOT NULL,
[Scan] [char](1) NOT NULL CONSTRAINT [DF_DispatchData_Scan] DEFAULT ('N'),
[ScanBy] [nvarchar](50) NULL,
[ScanTime] [datetime] NULL,
[Dscan] [char](1) NULL CONSTRAINT [DF_DispatchData_DispatchScan] DEFAULT ('N'),
[DscanBy] [nvarchar](50) NULL,
[DscanTime] [datetime] NULL,
[manualUpdate] [char](1) NULL CONSTRAINT [DF_DispatchData_manualUpdate] DEFAULT ('"N'''),
CONSTRAINT [PK_DispatchData] PRIMARY KEY CLUSTERED ( [RunningSequence] ASC )WITH(PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON)ON [PRIMARY] )[主要]
GO