溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MyCat不支持的SQL語句總結(jié)

發(fā)布時(shí)間:2020-08-11 05:47:00 來源:ITPUB博客 閱讀:304 作者:chenfeng 欄目:MySQL數(shù)據(jù)庫
已知的MyCat不支持的SQL語句類型如下:


SELECT:
跨分片(實(shí)體庫)的交叉查詢
跨節(jié)點(diǎn)的聯(lián)合查詢 (如用戶庫的表和平臺(tái)庫的表做聯(lián)合查詢)
INSERT:
插入的字段不包含分片字段 (如插入tbl_user_base_info表,沒有提供user_id列)
插入的分片字段找不到對(duì)應(yīng)分片
復(fù)制插入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 
復(fù)雜更新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:
復(fù)雜刪除 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未支持存儲(chǔ)過程定義, 因而不允許調(diào)用存儲(chǔ)過程,但可通過注解來調(diào)用各個(gè)分片上的存儲(chǔ)過程
Selectfunc(); 不支持這種方式直接調(diào)用自定義函數(shù),但支持select id, func() from employee 只需employee所在的所有分片上存在這個(gè)函數(shù)。MySql自帶函數(shù)可隨意使用。


注意事項(xiàng):
Order by字段必須出現(xiàn)在select中(MyCat先將結(jié)果取出,然后排序)
Group by務(wù)必使用標(biāo)準(zhǔn)語法select count(1),type from tab_a group by type;
MyCat的一些自帶函數(shù)sum,min,max等可以正確使用,但多分片執(zhí)行的avg有bug,執(zhí)行的結(jié)果是錯(cuò)誤的
謹(jǐn)慎使用子查詢,外層查詢沒有分片查詢條件,則會(huì)在所有分片上執(zhí)行(子查詢內(nèi)外層的表一樣較為特殊)


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI