当前位置: 首页 > 知识库问答 >
问题:

如何使用散列/索引结构进行适当的between查询

濮阳浩穰
2023-03-14

我找不到这个问题的答案,因为它看起来非常复杂

这里我有 1 张 3 列的表格

CodeVal_1   bigint  Unchecked 
CodeVal_2   bigint  Unchecked
CountryCode char(2) Unchecked

CodeVal_1和CodeVal_2一起构成主键

所以这个表包含如下数据

CodeVal_1   CodeVal_2   CountryCode
7602176     7864319     AT
16777216    16777471    AU
16777472    16778239    CN
16778240    16779263    AU
16779264    16781311    CN
16781312    16785407    JP
16785408    16793599    CN

现在我需要查询这个表作为

select CountryCode from tblCountryCodes where 215454 between CodeVal_1 and CodeVal_2

这完全适用于SQL服务器,但是每次查询调用都很慢。所以我想通过一些预加载等在整个C#代码中使其工作。

但是,我找不到比SQL server 2014更快的合适方法

有没有可能用某种双重索引(我不知道这个只是随口说说)、哈希表、字典等等来实现它

等待您的想法和建议

共有1个答案

邬博涉
2023-03-14

您说的“进行每个查询调用”是指您正在对215454进行不同值的多次调用吗?

如果是这种情况,您可以通过逗号分隔的字符串(由函数拆分)、xml 或表值参数为存储过程提供多个值,以允许您在一次调用中检索多个值。例如:

CREATE PROCEDURE [dbo].[usp_Table_SetVisibility] (
    @TableIds VARCHAR(MAX),
    @IsVisible BIT
)
AS

    UPDATE  e
    SET     e.IsVisible = @IsVisible
    FROM    dbo.udf_SplitString(@TableIds, ',') s
        INNER JOIN dbo.[Table] e ON e.TableId = s.Value;

GO
 类似资料:
  • 问题内容: 我需要可以在mysql,postgres和其他主要DB上运行的联接的通用SQL查询。 我有一个名为三列的表:(所有整数)。 如何进行联接,以使我不按BETWEEN而是按JOIN来使用BUT? 像(伪): 如何将以上两个查询结合起来,得到以下结果: 我正在尝试在和上使用2个索引。如果我在上使用BETWEEN和/或复合索引,则仅使用开始索引,而不使用结束索引。现在请不要告诉我我错了。我只是

  • 我有一个问题,我希望你能帮忙,因为我是哈希和哈希引用的东西的新手? 我有以下数据结构: 如果我想访问关键中的所有URL,以便我可以对URL执行一些其他操作,那么访问这些元素的正确或首选方法是什么? 例如,我将以下面的URL结束,然后我可以在< code>foreach循环中对这些URL执行操作: -编辑- 用于访问上面所示数据结构中进一步向下的元素的代码: 使用上面的代码,为什么会出现以下错误?

  • 所以除了上面的5个字段之外,core0中的rest all字段将为null。 下一个是核心1 核心1我们使用单独的查询索引3个字段 谢谢,拉维

  • 使用DynamoDB,没有简单的方法可以对列执行索引范围查询。主键、本地二级索引和全局二级索引都需要分区键来进行范围查询。 例如,假设我有一个带有数字分数属性的高分表。使用索引范围查询无法获得前10名或前25至50名 那么,执行这项极其常见的任务的惯用方式或首选方式是什么呢? > 接受表格扫描。 使用静态分区键并利用分区查询。 使用固定数量的静态分区键并使用多个分区查询。

  • 问题内容: 我有两个表: 这是我的查询: 并为此: 它在第一个表上使用的全索引扫描进行排序,但不使用y索引进行连接(在解释中)。这对性能非常不利,并且会杀死整个数据库服务器,因为这是一个非常频繁的查询。 我尝试使用反转表顺序,但这给了,甚至更糟。 有什么办法可以使mysql同时使用索引进行连接和排序? ===更新=== 我真的很绝望。也许某种形式的非规范化可以在这里有所帮助? 问题答案: 如果您有

  • 问题内容: 我有一个在轴1(列)中具有层次结构索引的数据框(来自操作): 我想将其展平,使其看起来像这样(名称不是关键的,我可以重命名): 我该怎么做呢?(我已经尝试了很多,无济于事。) 根据建议,这是字典形式的头 问题答案: 我认为最简单的方法是将列设置为顶级: 注意:如果to级别具有名称,你也可以通过此名称访问它,而不是0。 如果要将 组合成一个索引(假设你的列中仅包含字符串条目),则可以: