天天看點

MyCat不支援的SQL語句

已知的MyCat不支援的SQL語句類型如下(不完全統計,後續會更新):

SELECT:

Ø 跨分片(實體庫)的交叉查詢

Ø 跨節點的聯合查詢 (如使用者庫的表和平台庫的表做聯合查詢) 

INSERT:

Ø 插入的字段不包含分片字段 (如插入tbl_user_base_info表,沒有提供user_id列)

Ø 插入的分片字段找不到對應分片

Ø 複制插入Insert into…select… 

Ø 多行插入 insert into tab_a(c1,c2) values(v1,v2),(v11,v21)… 

UPDATE:

Ø 更新的列包含分片列

Ø 多表更新 update a, b set a.nation=’China’, b.pwd=’123456’ where a.id=b.id 

Ø 複雜更新 update a, b set a.nation=’China’ where a.id=b.id;  但支援子查詢方式 update a set a.nation=’China’ where id in (select id from b);

DELETE:

Ø 複雜删除 delete a from a join b on a.id=b.id;  支援子查詢方式

其它:

Ø Call procedure()   MyCat未支援存儲過程定義, 因而不允許調用存儲過程,但可通過注解來調用各個分片上的存儲過程

Ø Select func(); 不支援這種方式直接調用自定義函數, 但支援 select id, func() from employee 隻需employee所在的所有分片上存在這個函數。MySql自帶函數可随意使用。

注意事項:

Ø Order by字段必須出現在select中(MyCat先将結果取出,然後排序)

Ø Group by務必使用标準文法 select count(1),type from tab_a group by type;