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; 支援子查詢方式delete from a where a.id in (select id from b), 但表不能起別名
其它:
Call procedure() MyCat未支援儲存過程定義, 因而不允許呼叫儲存過程,但可透過註解來呼叫各個分片上的儲存過程
Selectfunc(); 不支援這種方式直接呼叫自定義函式,但支援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,執行的結果是錯誤的
謹慎使用子查詢,外層查詢沒有分片查詢條件,則會在所有分片上執行(子查詢內外層的表一樣較為特殊)
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; 支援子查詢方式delete from a where a.id in (select id from b), 但表不能起別名
其它:
Call procedure() MyCat未支援儲存過程定義, 因而不允許呼叫儲存過程,但可透過註解來呼叫各個分片上的儲存過程
Selectfunc(); 不支援這種方式直接呼叫自定義函式,但支援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,執行的結果是錯誤的
謹慎使用子查詢,外層查詢沒有分片查詢條件,則會在所有分片上執行(子查詢內外層的表一樣較為特殊)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2140678/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL語句規範總結SQL
- MySQL基本sql語句總結MySql
- sql語句學習總結SQL
- SQL語句使用總結(一)SQL
- SQL單表查詢語句總結SQL
- 常用SQL語句彙總SQL
- Mysql跨表更新 多表update sql語句總結MySql
- 初級進階版SQL語句總結(1)SQL
- 總結出10條SQL語句優化精髓SQL優化
- Oracle行轉列、列轉行的Sql語句總結OracleSQL
- oracle 使用者跟蹤 需要的sql語句總結OracleSQL
- 通過分析SQL語句的執行計劃優化SQL(總結)SQL優化
- sql的聯結語句詳解SQL
- jquery常用語句總結jQuery
- 賓語從句總結
- 透過分析SQL語句的執行計劃最佳化SQL(總結)SQL
- MYSQL 常用sql語句小結MySql
- [轉]透過分析SQL語句的執行計劃最佳化SQL(總結)SQL
- MySql常用操作SQL語句彙總MySql
- 資料庫常用的sql語句彙總資料庫SQL
- sql語法總結SQL
- MySQL -update語句流程總結MySql
- MySql相關語句總結MySql
- Oracle經典sql語句總結@sql-plus重點函式串講與sql語句案例@中文排序詳講).docOracleSQL函式排序
- 使用sql語句查詢平均值,使用sql語句查詢資料總條數, not in 篩選語句的使用SQL
- Sybase及SQL Anywhere SQL語句小結(轉)SQL
- 找工作筆試面試那些事兒(10)---SQL語句總結筆試面試SQL
- SQL語句查詢表結構SQL
- SQLite SQL語句結構詳解SQLite
- 簡單SQL語句小結(轉)SQL
- SQL語句為什麼不會共享(上)SQL
- SQL語句為什麼不會共享(中)SQL
- SQL語句為什麼不會共享(下)SQL
- mysql alter語句用法總結大全MySql
- MyBatis中Like語句使用總結MyBatis
- Oracle常用維護語句總結Oracle
- 《shell指令碼if..then..elif..then.if語句的總結》指令碼
- hibernate的hql查詢語句總結