博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阿里云分布式关系数据库DRDS笔记
阅读量:4680 次
发布时间:2019-06-09

本文共 1650 字,大约阅读时间需要 5 分钟。

1.Join左边的表查询数据越少,性能越好

2.广播表作为Join的驱动表
3.SQL的Limit优化
SELECT * FROM t_order oWHERE o.id IN (         SELECT id         FROM t_order         ORDER BY id  LIMIT 10000,2  )

SQL的ORDER BY 优化

这么写会报错
select buyer_id,         count(*) as maxSize from t_trade group by buyer_id order by maxSize desc limit 1
 
在 INSERT / REPLACE 语句中必须包含分库分表的字段(拆分键)
INSERT INTO table VALUES (‘name1’, ‘value2’)报错
INSERT INTO table (id, name, value) VALUES (1, ‘name1’, ‘value2’)允许执行
 
SELECT / UPDATE / DELETE 语句如果 WHERE条件中没有包含拆分字段,或者带的拆分字段不全,会进行全表扫描
SELECT * FROM table WHERE id = 1 AND date > 3;进行路由计算
SELECT * FROM table WHERE id = 1;需要进行全表扫描
 
SELECT / UPDATE / DELETE 语句如果在 WHERE 条件中带有全部拆分字段,——则拆分字段之间的逻辑关系一定是AND, 不支持OR; 对于同一个拆分字段的条件组合,用 AND 或者 OR 都是支持的。
SELECT * FROM table WHERE id = 1 AND date > ‘2014/1/30’;AND ——正确组合。
SELECT * FROM table WHERE id = 1 OR date > ‘2014/1/30’;OR ——错误组合
SELECT * FROM table WHERE id > 1 AND date > ‘2014/1/30’ AND date < ‘2014/3/1’;AND ——正确组合
SELECT * FROM table WHERE id > 1 AND date < ‘2014/2/1’ OR date > ‘2014/2/28’;AND ——正确组合。date 字段的条件组合是 OR
 
同一个拆分字段,AND 连接的条件个数只能为2,OR 连接的条件个数不限。
SELECT * FROM table WHERE date > ‘2014/1/30’ AND date < ‘2014/3/1’;正确,date 字段 AND 连接的条件个数是 2。
SELECT * FROM table WHERE date > ‘2014/1/30’ AND date < ‘2014/3/1’ AND date < ‘2014/2/28’;错误,date 字段 AND 连接的条件个数是 3
 
同一个拆分字段的条件可以包含多个值,但每个值只能对应一种比较关系。
SELECT * FROM table WHERE date > ‘2014/1/30’ AND date < ‘2014/3/1’;正确,date 字段两个条件的值分别是 ‘2014/1/30’ 和 ‘2014/3/1’。
SELECT * FROM table WHERE date > ‘2014/1/30’ AND date < ‘2014/1/30’错误,date 字段的条件值 ‘2014/1/30’ 同时对应了大于和小于关系。
 

切分方案

一般对于name和id用hash,对日期用日期函数

 

转载于:https://www.cnblogs.com/alisande/p/5409023.html

你可能感兴趣的文章