1. 程式人生 > 其它 >from server sql 拼接統計兩個子查詢_非規範SQL的sharding-jdbc實踐,精髓內容

from server sql 拼接統計兩個子查詢_非規範SQL的sharding-jdbc實踐,精髓內容

技術標籤:from server sql 拼接統計兩個子查詢

f9278635c8abece88e82e00883b67752.gif

原創:小姐姐味道(微信公眾號ID:xjjdog),歡迎分享,轉載請保留出處。

在《“分庫分表” ?選型和流程要慎重,否則會失控》中,我們談到處於驅動層的sharding-jdbc。開源做到這個水平,已經超棒了,不像tddl成了個太監。但還是有坑。

不過不能怪框架,畢竟有些sql,只有程式和鬼能懂。

 select  from order where orderCode = #{item} 

不支援的操作

分庫分表後,就成為了一個閹割型的資料庫。很多sql的特性是不支援的,需要使用其他手段改進。以下以3.0.0版本進行描述。

distinct

sharding-jdbc不支援distinct,單表可使用group by進行替代。多表聯查可使用exists替代

select DISTINCT a, b, c, d from tablewhere df=0

改成

select a, b, c, d from tablewhere df=0group by a, b, c, d

having

sharding-jdbc不支援having,可使用巢狀子查詢進行替代

union

sharding-jdbc不支援union(all),可拆分成多個查詢,在程式拼接

關於子查詢

sharding-jdbc不支援在子查詢中出現同樣的表,如

以下可以⇒

SELECT COUNT(*) FROM (SELECT * FROM t_order o)

以下報錯⇒

SELECT COUNT(*) FROM (SELECT * FROM t_order o WHERE o.id IN (SELECT id FROM t_order WHERE status = ?))

由於歸併的限制,子查詢中包含聚合函式目前無法支援。

mybatis 註釋

sharding-jdbc不支援sql中的