gpt4 book ai didi

.net - 如何在 .net 中对大约 1000 万的大量数据组织搜索架构

转载 作者:行者123 更新时间:2023-12-02 02:28:45 24 4
gpt4 key购买 nike

我有一个表,它存储了大约 1000 万条记录(项目),每条记录都有 itemtype(它是表类型的引用键)。在我的网站上,我有一个基于全文搜索的搜索功能,没问题,但几天前,我的客户不仅希望在网站上显示所有项目,还想显示项目类型。

我尝试对不同的服务器执行两个并行请求(一个到 repl 服务器,一个到主服务器):

-- 第一个请求 - 按 itemtypeid 分组项目(使用全文搜索)并返回 itemtypeid 列表

--第二个请求-在数据库中搜索关键字(全文搜索)

在网络服务器上,我汇总了这些请求的结果并将其推送到网络浏览器。问题:第一个请求运行的速度没有我想要的那么快:)(非常慢),六(八)个月后将有超过 1100 万个项目,因此,第一个请求会越来越慢。

请告诉我正确的方法。

最佳答案

除了@sonyc 所说的,你还应该考虑:

  1. 表的连接顺序。数据库如何管理系统进行连接在 Item 和 ItemType 之间表?有一点很有用对可能发生的事情的想法,所以你可以做出一些明智的决定关于添加索引。

    连接表的一种方法是称为嵌套循环。这意味着你向下扫描一张表中的行,对于每一行,你浏览另一个表中的所有行查找连接条件的匹配项。

    很明显,哪个表在外部循环会有所作为。如果我们开始扫描 ItemType表,我们需要能够快速找到匹配的行Item 表中的 ItemID。要是我们首先选择项目中的行表,我们需要快速找到匹配 ItemType 中的 ItemID table 。因为总会有主键 ItemID 上的索引在 Item 表中,第一个选项将始终非常高效。

  2. 哪些字段应该被索引

    另一种进行连接的方法是首先对两个表进行排序加入领域。然后很容易找到匹配的行。这称为合并加入。对每个表进行排序是一个昂贵的操作。但是,如果表已经排序(他们都在连接上有聚集索引字段 ItemID),然后合并操作效率很高。

我们研究了数据库系统可以执行的几种方式连接:使用嵌套循环或使用排序和合并。哪一个会发生?幸运的是,我们不必担心这个,因为好的关系数据库产品都有查询优化器找出最有效的方法。

因此,为了进一步优化查询,我们应该使用查询优化器进行。查询优化器会考虑很多事情,比如哪些索引是present,表中的行数,行的长度,以及哪些字段是输出中需要。优化器会查看所有可能的步骤来完成任务并为每个任务分配时间成本。然后它会提出最有效的计划。

您还可以使用查询计划分析工具来调查添加索引的效果你的 table 。索引可以显着加快您的查询速度,尤其是当您的表变大时。索引通常会自动为主键字段添加。字段索引您想要订购或在选择条件下使用的信息也很有用。它总是值得的检查向外键字段添加索引的有用性,因为这些常用于加盟条件。然而,索引是有代价的,因为它们需要在每次插入一行时更新添加、删除或更改表。这会在加快速度的同时减慢一些更新操作一些检索操作。您需要确定各种效率的重要性针对您的特定情况。

关于.net - 如何在 .net 中对大约 1000 万的大量数据组织搜索架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4727022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com