我在一家出版商工作,我们的产品主要是书籍和期刊。它们最常见的结构如下:
Book > Chapter
Book Series > Book > Chapter
Book > Volume > Chapter
Book Series > Book > Volume > Chapter
Journal > Volume > Issue > Article
Journal > Volume > Article
Run Code Online (Sandbox Code Playgroud)
我们目前将所有这些记录与 Id 和 ParentId 列存储在同一个表中。例如,TitleId = 1 的书有 3 章将具有以下行:
Book: Id = 1, ParentId = 1
Chapter #1: Id = 2, ParentId = 1
Chapter #2: Id = 3, ParentId = 1
Chapter #3: Id = 4, ParentId = 1
Run Code Online (Sandbox Code Playgroud)
所有这些记录,无论是书籍、章节、期刊、文章等,都可以将它们的 Id 连接到其他表,以获取作者、价格、所有权等信息。
这种结构给我们带来的问题是嵌套在某些情况下会增加大量开销。例如,如果有人试图访问他们购买的期刊文章,我们需要运行多个查询来了解他们是否确实有权访问。我们有一个包含自有产品 …
我正在尝试向数据库添加一列。查询已经运行了 25 分钟,它锁定了对该表的 Web 访问并破坏了我们的网站:
alter table MyTable
add MyNewColumn varchar(max) not null
default ('')
Run Code Online (Sandbox Code Playgroud)
该表在不同的列中包含二进制数据并且非常大。
使用红色的“取消执行查询”按钮取消会导致其他问题吗?我只是想弄清楚此时是否应该尝试取消查询,以及它运行了这么长时间后会发生什么。