我感谢你的时间。
您能否与我分享您在元素计数方面的经验?
第一种方法 - 将元素作为数组存储在一个数据库字段中,并在读取后使用服务端语言进行计数。
第二种方法 - 在字段中传播数组并使用 SQL COUNT(2 个表)计算字段数。
第三种方法 - 在数据库中存储一个字段,其中包含要计数的元素总和的未更新值。
哪种方法将执行得更快,并且易于扩展。
我感谢你的时间。
您能否与我分享您在元素计数方面的经验?
第一种方法 - 将元素作为数组存储在一个数据库字段中,并在读取后使用服务端语言进行计数。
第二种方法 - 在字段中传播数组并使用 SQL COUNT(2 个表)计算字段数。
第三种方法 - 在数据库中存储一个字段,其中包含要计数的元素总和的未更新值。
哪种方法将执行得更快,并且易于扩展。
将元素作为数组存储在一个数据库字段中,并在一次读取后使用服务端语言进行计数。
这一个非常糟糕糟糕。不仅从设计的角度来看是不好的,而且每次你想要计数时,你都必须有效地返回所有元素。数据库花费更长的时间读取实际文件页面,以及将数据发送回客户端的时间更长。一旦它在客户端上,您就需要对其进行解析,然后获取计数。总而言之,这可能会慢得多,而且设计要差得多。
在字段中展开数组并使用 SQL COUNT 计算字段数。
三者中的最佳选择,如果修改的话。您不想将数组作为字段传播。你真的想把它分散成行。你想要一个一对多的关系表。这允许数据库做它擅长的事情,只访问最少量的所需信息,最后只返回一个数字。这里的每个人所涉及的工作要少得多。
在数据库中存储一个字段,该字段包含要计数的元素总和的未更新值。
这可能意味着两种不同的东西。首先是您有一个每次插入/删除时手动更新的字段。这会很糟糕,因为它很容易忘记,那为什么要这样做呢?虽然这可能是所有选项中性能最好的,但它也增加了风险。第二,将有一个计算列为您存储计数。这允许 sql server 为您跟踪它,并且可能是使查询更容易的合理选择,但如果您抓取整行而不想要计数,则会对性能产生负面影响。总体而言,其中的第二个还不错,但是当它实际上很好时,它是相当情境化的。