受到 Django 建模问题的启发:Database Modeling with multiple many-to-many Relations in Django。db-design 是这样的:
CREATE TABLE Book
( BookID INT NOT NULL
, BookTitle VARCHAR(200) NOT NULL
, PRIMARY KEY (BookID)
) ;
CREATE TABLE Tag
( TagID INT NOT NULL
, TagName VARCHAR(50) NOT NULL
, PRIMARY KEY (TagID)
) ;
CREATE TABLE BookTag
( BookID INT NOT NULL
, TagID INT NOT NULL
, PRIMARY KEY (BookID, TagID)
, FOREIGN KEY (BookID) REFERENCES Book (BookID)
, FOREIGN KEY (TagID) …Run Code Online (Sandbox Code Playgroud) 我有一段代码可以执行插入到高度非规范化的表中。这些表的列数从 ~100 到 300+ 不等。这是 SQL Server 2008 R2,在 Windows Server 2008 上运行。
每个插入包括插入到同一事务下的多个表。有些插入是由 NHibernate 批处理的,但有些不能,但它们都在同一个事务下。
当我通过重复调用一段执行插入的代码来执行插入 500 次时,我得到平均约 360 毫秒。
奇怪的是,当我使用 4 个进程(在 Windows Server 2008 下从 4 个不同的命令提示符运行相同的 exe)同时运行测试代码时,每次调用的插入性能变得更好。我看到突发速度高达 90 毫秒(快了几乎 X4)。我正在测量代码中的插入时间。
由于这 4 个进程彼此一无所知,我假设这与 SQL Server 有关,但我完全不知道为什么。我想知道为什么会发生这种情况,以及是否有任何配置可以让我在插入不那么频繁的情况下获得相同的性能。
同样欢迎有关 SQL Server 监视方法以了解数据库级别发生的情况的建议。
我正在尝试为将成为 Delphi UI 应用程序后端的 MS SQL Server 数据库建模用户身份验证模块。基本上,我想拥有用户只属于一个组的用户帐户。一个组可以拥有“n”个权限。
我还想向数据库添加密码历史记录,因为用户将需要根据应用程序设置(例如,每 90 天)更改其密码。
我还想在每次用户登录和退出时记录一个事件。我可能会将其扩展到未来的其他活动。
下面你会发现我的第一个破解。请让我知道任何改进它的建议,因为这是我第一次这样做。
您是否认为需要针对基于角色的安全性和密码规则/到期期限的约束的其他属性?

我正在尝试创建一个STORED PROCEDURE将用于UPDATE名为machine. 此表包含三列(machine_id、machine_name和reg_id)。
在上述表中,reg_id( INT) 是一列,其值可以更改为 a machine_id。
我想定义一个QUERY/PROCEDURE来检查reg_id该表中是否已经存在。如果是,则为UPDATE该行,否则INSERT为新行。
有人可以帮我写那个QUERY/PROCEDURE吗?
为什么这个查询
DELETE FROM test
WHERE id = ( SELECT id
FROM (SELECT * FROM test) temp
ORDER BY RAND()
LIMIT 1
);
Run Code Online (Sandbox Code Playgroud)
有时删除 1 行,有时删除 2 行,有时什么都不删除?
如果我用这种形式写:
SET @var = ( SELECT id
FROM (SELECT * FROM test) temp
ORDER BY RAND()
LIMIT 1
);
DELETE FROM test
WHERE id=@var;
Run Code Online (Sandbox Code Playgroud)
那么它可以正常工作 - 子查询有问题吗?
我有一张comments表,可以简化为:
comments
=======
id
user_id
text
parent_id
Run Code Online (Sandbox Code Playgroud)
where 可以parent_id为空,但可能是其父注释的键。
现在,我如何才能select对特定评论的所有后代?
评论可能低了好几层……
我需要确定 SQL Server 中日期范围“1.1.1996 - 30.8.2014”的“每个月的第三个星期五”的日期。
我希望我应该使用的组合DENSE_RANK(),并PARTITION BY()以一套“等级= 3”。但是,我是 SQL 新手,无法找到正确的代码。
在 MS SQL Servernolock中可以用于此目的。
为什么我们不能在Oracle和plsql中使用它?
执行这个请求:
update table t1 set t1.column = 0 where t1.column2 = 1234
Run Code Online (Sandbox Code Playgroud)
收到此错误:
关系“表”的“t1”列不存在
这个请求在 MySQL 中运行良好。
为什么我会在 PostgreSQL 中收到此错误?
我有下面给出的 SQL 查询,我想使用like运算符选择多个值。
我的查询正确吗?
SELECT top 1 employee_id, employee_ident, utc_dt, rx_dt
FROM employee
INNER JOIN employee_mdata_history
ON employee.ident=employee_mdata_history.employee_ident
WHERE employee_id like 'emp1%' , 'emp3%'
ORDER BY rx_dt desc
Run Code Online (Sandbox Code Playgroud)
如果没有,有人可以纠正我吗?
我的表有大量以'emp1'和开头的数据'emp3'。我可以根据前 3 个“emp1”和前 2 个“emp3”过滤结果rx_dt吗?
sql-server ×4
mysql ×3
foreign-key ×2
datatypes ×1
date ×1
date-format ×1
join ×1
like ×1
operator ×1
oracle ×1
postgresql ×1
select ×1
update ×1