SqlServer和PostgreSQL的两点差异
博客专区 > 黄裳23 的博客 > 博客详情
SqlServer和PostgreSQL的两点差异
黄裳23 发表于1年前
SqlServer和PostgreSQL的两点差异
  • 发表于 1年前
  • 阅读 13
  • 收藏 0
  • 点赞 0
  • 评论 2

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 写demo时遇到的一些问题,记录一下

※差异1

SqlServer利用Insert Into tablename values (a,b),(a1,b1),...语句批量插入数据时,有1000行以内的制限。

https://msdn.microsoft.com/ja-jp/library/dd776382.aspx

PostgreSQL没有相关的制限,一次插入10万条都可以。

※差异2

SqlServer删除数据时,如果数据量很大,可以分批量一次一次删除

Delete Top 1000000 From tableName where ...

而PostgreSQL貌似不支持这种方式。

只能用 以下语句

Delete From TableName where column1 In (Select * From TableName  Where where_str Limmit 1000000)

但是这样还是有缺陷,这条语句的column1只能针对有唯一性约束的列才能真正达到目标,精确删除100万条数据。如果对于没有主键并且有多列值可能重复的情况,这样还是行不通。

共有 人打赏支持
粉丝 3
博文 48
码字总数 9420
评论 (2)
黄裳23
DELETE FROM {0} WHERE (col1, col2, col3, col4, col5...) IN (SELECT * From {1} WHERE {2} LIMIT {3}
经过测试,删除3亿数据中的100万条时,耗时超过半小时。。。
黄裳23
终于找到了代替方案,性能得到了大幅的优化
DELETE FROM tableNameA WHERE Datetime = any (array(SELECT Datetime FROM tableNameA WHERE ... LIMIT 1000000))
×
黄裳23
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: