MyCat不支持的SQL語句


SELECT
Ø 跨分片(實體庫)的交叉查詢
Ø 跨節點的聯合查詢 (如用戶庫的表和平台庫的表做聯合查詢) 

INSERT
Ø 插入的字段不包含分片字段 (如插入tbl_user_base_info表,沒有提供user_id列)
Ø 插入的分片字段找不到對應分片
Ø 復制插入Insert intoselect… 
Ø 多行插入 insert into tab_a(c1,c2) values(v1,v2),(v11,v21)… ##針對的是ER分表的從表無法批量插入 UPDATE
Ø 更新的列包含分片列
Ø 多表更新 update a, b set a.nation=’China’, b.pwd=123456where 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,執行的結果是錯誤的
Ø 謹慎使用子查詢,外層查詢沒有分片查詢條件, 則會在所有分片上執行(子查詢內外層的表一樣較為特殊)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM