C# MSSQL数据库的优化

C# MSSQL数据库的优化,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我想简单地解释一下我的项目 我已经建立了一个电子商务网站(ASP.NET C#MSSQL),要求用户在付款前注册(如果他们没有注册) 每当用户注册时,都会使用C#自动创建一个表。此表用于存储购物车项目的数据。我认为这将使购物车项目/表格所需的逻辑更简单。最近我意识到这种逻辑的影响。目前我有735个用户,这意味着还有735个表。所以我的表格总数是785张(包括我整个网站使用的50张表格)。现在,我的网站似乎变得越来越慢,有时,当用户注册时,购物车表不会被创建。因此,出现了一个意外错误。到目前为止,

我想简单地解释一下我的项目

我已经建立了一个电子商务网站(ASP.NET C#MSSQL),要求用户在付款前注册(如果他们没有注册)

每当用户注册时,都会使用C#自动创建一个表。此表用于存储购物车项目的数据。我认为这将使购物车项目/表格所需的逻辑更简单。最近我意识到这种逻辑的影响。目前我有735个用户,这意味着还有735个表。所以我的表格总数是785张(包括我整个网站使用的50张表格)。现在,我的网站似乎变得越来越慢,有时,当用户注册时,购物车表不会被创建。因此,出现了一个意外错误。到目前为止,大约有8个用户没有创建购物车表。我必须手动创建这些

我的假设是,由于数据库中的表太多,我的网站速度变慢了

伙计们,请帮助我了解我的问题,如果可能的话给我一些建议,这样我可以优化我的数据库和网站。是否有限制,比如每个数据库可以创建多少个表


感谢您的时间和关注。

使用一个“购物车”表,为该表中的所有用户存储所有购物车项目。通过使用绑定到特定用户的cartID来区分不同的cart。

这是糟糕的数据库设计。您应该(几乎?)永远不必动态创建表。创建一个“购物车”表并添加一个用户id字段。每个人都用那张桌子。修改查询以按用户id筛选

表的数量没有设置限制。您可以拥有超过20亿个数据库对象:


一定要花时间编写脚本,将数据传输到新的单个表中。。。这最终是值得的。您当前的方法(创建对象、权限、索引、优化等)会带来巨大的开销。

首先,购物车的设计是错误的,应该更改

我强烈怀疑,如果你选择了“购物车”的设计,这表明了(思考如何把它放得好)。。。经验水平可能会导致您做出许多其他糟糕的设计选择


性能问题可能与此相关,但如果没有分析,就无法确定。坦率地说,有各种各样的方法使系统变慢。考虑使用类似的工具,这将帮助您理解代码的行为缓慢。

为所有用户使用一个单一的[CART]表。在Cart表中添加一个UserID列,以区分每个用户的不同行。是的,这是我现在的想法,但在每个(735)表中输入所有数据将需要大量工作,我还必须更改编码,但如果这是唯一的方法,那么我必须这样做。我很遗憾没有看到那件事。同时,我想知道我的问题的答案(如果有)。谢谢您可以编写一个SQL Server过程,将所有数据从用户购物车表一次复制到公共购物车表。。作为另一个问题提问,并包括用户购物车表的表定义(及其命名格式)。是的,这是我现在的想法,但在每个(735)表中输入所有数据将需要大量工作,我还必须更改编码,但如果这是唯一的方法,那么我必须这样做。同时,我想知道我的问题的答案(如果有)。谢谢你,你可以很容易地编写一些代码来自动化这个过程。是的,我想您的数据库可能有800个表,考虑到这个问题,您可能会做出更糟糕的设计决策,我们不知道这些决策是否也会影响它。编写一些代码将不同的推车移动到一个表中。实际上,移动所有Cart并更改源代码以使用它应该是一项快速的工作。是的,这就是我现在所想的,但在每个(735)表中输入所有数据将需要大量的工作,我还必须更改编码,但如果这是唯一的方法,那么我必须这样做。我很遗憾没有看到那件事。同时,我想知道我的问题的答案(如果有)。感谢您的回答,同时也感谢您推荐mini profiler。我一定会试试看。顺便说一句,这是我第一次独自建立一个巨大的网站。我有20天的时间来做研究和建造它。大量的javascript,设计,以及所有涉及的后端编码(第一次制作cart)。由于压力,我误判了方法(没有人指导我)。如果你有任何更多的建议或工具,我可能需要,然后请指导我。我真的很感激。