在客户端中…请发布您从数据库中获得的实际错误消息。我认为我遇到的主要问题是通过SQL Squirrel运行查询,而不是直接在db环境中查询。换了这个,效果很好。你试过比1000块更小的块吗?您也可以只使用一个idstoupdate表,并将相应的where子
在客户端中…请发布您从数据库中获得的实际错误消息。我认为我遇到的主要问题是通过SQL Squirrel运行查询,而不是直接在db环境中查询。换了这个,效果很好。你试过比1000块更小的块吗?您也可以只使用一个idstoupdate表,并将相应的where子,sql,db2,memory-efficient,Sql,Db2,Memory Efficient,在客户端中…请发布您从数据库中获得的实际错误消息。我认为我遇到的主要问题是通过SQL Squirrel运行查询,而不是直接在db环境中查询。换了这个,效果很好。你试过比1000块更小的块吗?您也可以只使用一个idstoupdate表,并将相应的where子句添加到子查询中。这可能是硬件问题(如中所述,还不够),因为我可以在129mil行表上运行等效语句(instantaneuos响应)。另外,请告诉我们您在clients中的id上有一个索引……请发布您从数据库中获得的实际错误消息。我认为我遇到的
在
客户端中
…请发布您从数据库中获得的实际错误消息。我认为我遇到的主要问题是通过SQL Squirrel运行查询,而不是直接在db环境中查询。换了这个,效果很好。你试过比1000块更小的块吗?您也可以只使用一个idstoupdate
表,并将相应的where
子句添加到子查询中。这可能是硬件问题(如中所述,还不够),因为我可以在129mil行表上运行等效语句(instantaneuos响应)。另外,请告诉我们您在clients
中的id
上有一个索引……请发布您从数据库中获得的实际错误消息。我认为我遇到的主要问题是通过SQL Squirrel运行查询,而不是直接在db环境中查询。edwardmlyte:这种更新的另一种方法是使用语句。它是DB2的一个相对较新的特性——我相信它是在DB28.2中引入的。MERGE语句可能是其他人了解您意图的最清晰的方式。虽然这对于您的需求来说可能有些过分,但了解它是一个很好的模式。@edwardmlyte这种更新的另一种方法是使用语句。它是DB2的一个相对较新的特性——我相信它是在DB28.2中引入的。MERGE语句可能是其他人了解您意图的最清晰的方式。虽然这对于你的需求来说可能有些过分,但这是一个很好的模式。
update clients
set col1='1', col2='y'
where id in
(select id from idstoupdate)
dbHandle = sqllib->open_connection(database, user, password)
select_statement = dbHandle->prepare('SELECT id FROM idstoupdate')
update_statement = dbHandle->prepare('UPDATE clients SET col1=?, col2=? WHERE ID=?')
resultset = statement->execute(select_statement)
foreach (row in resultset) {
id = row.getColumn('id')
update_statement->execute('1','2',id)
}
dbHandle->disconnect();
UPDATE table1 t1
SET (t1.field1, t1.field2) =
(
SELECT t2.field1,
t2.field2
FROM table2 t2
WHERE t1.joinfield = t2.joinfield
AND t2.criteriafield = 'qualifier'
)
WHERE EXISTS
(
SELECT 1
FROM table2
WHERE t1.joinfield = table2.joinfield
AND t2.criteriafield = 'qualifier'
)
UPDATE clients t1
SET t1.col1 = '1', col2 = 'y'
WHERE EXISTS
(
SELECT 1
FROM idstoupdate t2
WHERE t1.id = t2.id
)