REPLACE是否与#memsql中的列存储表一起使用? Memsql文档没有提到这一点,但我无法替换列存储中的记录。有没有办法在列存储中实现REPLACE?
由于 zebb
答案 0 :(得分:1)
REPLACE仅对唯一键有用,否则它只等同于INSERT,而且列存储表不支持唯一键。
没有一种在列存储中有效实现它的好方法,因为列存储通常不适用于单行更新。请参阅http://docs.memsql.com/docs/columnstore。
您可以实现它的一种方式(效率不高)是多语句交易。运行select以查看是否已存在匹配的行,如果是,则运行更新,否则运行insert。
E.g。说我们有
create table c(i int, a int, key using clustered columnstore(i));
我们可以做到
memsql> begin;
Query OK, 0 rows affected (0.00 sec)
memsql> select count(*) from c where i = 4;
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
memsql> insert into c values (4, 4);
Query OK, 1 row affected (0.00 sec)
memsql> commit;
Query OK, 0 rows affected (0.00 sec)
在没有匹配的情况下,
memsql> begin;
Query OK, 0 rows affected (0.00 sec)
memsql> select count(*) from c where i = 4;
+----------+
| count(*) |
+----------+
| 1 |
+----------+
1 row in set (0.01 sec)
memsql> update c set a = 4 where i = 4;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
memsql> commit;
Query OK, 0 rows affected (0.00 sec)
在匹配的情况下。