SELECT: Ø 跨分片(實體庫)的交叉查詢 Ø 跨節點的聯合查詢 (如用戶庫的表和平台庫的表做聯合查詢) INSERT: Ø 插入的字段不包含分片字段 (如插入tbl_user_base_info表,沒有提供user_id列) Ø 插入的分片字段找不到對應分片 Ø 復制插入Insert into…select… Ø 多行插入 insert into tab_a(c1,c2) values(v1,v2),(v11,v21)… ##針對的是ER分表的從表無法批量插入 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; 支持子查詢方式 delete from a where a.id in (select id from b), 但表不能起別名 其它: Ø 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; Ø MyCat的一些自帶函數 sum,min,max等可以正確使用,但多分片執行的avg有bug,執行的結果是錯誤的 Ø 謹慎使用子查詢,外層查詢沒有分片查詢條件, 則會在所有分片上執行(子查詢內外層的表一樣較為特殊)