小编Bri*_*hek的帖子

在两个 bigint 列之间搜索的查询的最佳索引策略

我在 MS-SQL 中有下表:

CREATE TABLE [dbo].[dbip_locations](
    [ip_from] [bigint] NOT NULL,
    [ip_to] [bigint] NOT NULL,
    [country_code] [nvarchar](64) NOT NULL,
    [region_name] [nvarchar](128) NOT NULL,
    [city_name] [nvarchar](128) NOT NULL,
    [latitude] [float] NOT NULL,
    [longitude] [float] NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

ip_from 和 ip_to 列是根据 ipv4 地址计算的,如下所示:

return (
      convert(bigint, parsename(@ip, 1)) +
      convert(bigint, parsename(@ip, 2)) * convert(bigint, 256) +
      convert(bigint, parsename(@ip, 3)) * convert(bigint, 65536) +
      convert(bigint, parsename(@ip, 4)) * convert(bigint, 16777216)
    )
Run Code Online (Sandbox Code Playgroud)

然后,我使用使用上述计算转换为 bigint 的 ipv4 地址来搜索 ip 地址位于 ip_from 和 ip_to 列之间的行。

我总是会找到一行,虽然它不是由模式强制执行的,但这是数据中的现实。 …

index sql-server optimization clustered-index nonclustered-index

4
推荐指数
2
解决办法
784
查看次数

“删除不可恢复的检查点表行”是什么意思?

当我查看生产 SQL Server 2016 的服务器日志时,我看到多个条目:

[信息] 数据库 ID:[5]。正在删除不可恢复的检查点表行(id:294)。

对于每个条目,末尾的 id 加 1。

我用谷歌搜索了这个错误,实际上没有任何关于它的信息。这个条目是什么意思?听起来相当不祥。

sql-server checkpoint errors sql-server-2016

3
推荐指数
1
解决办法
1万
查看次数