我有两个表(UserTable和UserProfile)和结构:
create table userTable( id_user int identity(1,1) primary key , Name varchar(300) not null , Email varchar(500) not null , PasswordUser varchar(700) not null, userType int , constraint usertype_fk foreign key(userType) REFERENCES userType(id_type) on delete set null )
和userPtrofile:
create table UserProfile( id_profile int identity(1,1) primary key , ClientCmpName varchar(300) null, Clientaddress varchar(500) null, phone varchar(50) null, descriptionClient varchar(400) null, img image null, messageClient text , fk_user int , constraint fkuser foreign key(fk_user) references userTable(id_user) on delete cascade )
我正在使用SQL Server 2008。 问题是当我更新记录执行加载而不执行 这是示例查询:
update UserProfile set messageClient=N'010383772' where fk_user=2;
截图
答案 0 :(得分:1)
如果您担心此查询的效果:
require_relative "./B/X"
module A
class test
include B
def
puts self.method("testx")
end
end
end
然后索引将非常有用:
update UserProfile
set messageClient = N'010383772'
where fk_user = 2;
这应该使查询几乎是即时的。
注意:索引可能会降低插入和其他操作的速度。这通常不是一个大问题,并且在外键列上有索引很常见。
答案 1 :(得分:0)
愚蠢的问题,您为什么要尝试根据[userType]
值进行更新?
update UserProfile set messageClient=N'010383772' where fk_user=2;
您不希望根据其ID(这是一个主键,在一个特定的[UserProfile]
上更新此值,因此会更快)
UPDATE [UserProfile]
SET [messageClient]='010383772'
WHERE id_profile=2;
可能性能问题是由于您的UPDATE尝试使用此特定[UserProfile]
值更新所有UserType
条记录...?
或者我错过了您尝试做的事情(以及您尝试更新的记录数量)。
答案 2 :(得分:0)
也许你已经在另一个进程(也许是另一个查询编辑器页面)的表上启动了一个事务(BEGIN TRANSACTION),直到你不停止该事务,该表将无法用于更新。 检查变量select @@ trancount,或尝试回滚已经进行的更新(ROLLBACK TRANSACTION)。 还要检查是否可以更新其他表而不会出现问题。
答案 3 :(得分:0)
查询是否曾执行过?这似乎是一个僵局。你应该 某个过程open the activity monoitor和check if your query is blocked。
在这种情况下,您应该终止阻止查询。
答案 4 :(得分:0)
感谢您试图帮助我 我的问题修复了问题是另一个查询编辑器页面,因为我使用asp.net和另一个页面我使用相同的记录来更新相同的记录,当我停止asp.net项目,然后查询成功