时间:2021-07-01 10:21:17 帮助过:2人阅读
1.Join左边的表查询数据越少,性能越好
2.广播表作为Join的驱动表 3.SQL的Limit优化
- <code>SELECT *
- FROM t_order o
- WHERE o.id IN (
- SELECT id
- FROM t_order
- ORDER BY id
- LIMIT 10000,2 )</code>
- <code>select buyer_id,
- count(*) as maxSize
- from t_trade
- group by buyer_id
- order by maxSize desc
- limit 1</code>
- <code> </code>
- <code>在 INSERT / REPLACE 语句中必须包含分库分表的字段(拆分键)</code>
- <code>INSERT INTO table VALUES (‘name1’, ‘value2’)
- 报错
- </code>
- <code>INSERT INTO table (id, name, value) VALUES (1, ‘name1’, ‘value2’)
- 允许执行</code>
- <code> </code>
- SELECT / UPDATE / DELETE 语句如果 WHERE条件中没有包含拆分字段,或者带的拆分字段不全,会进行全表扫描
- <code>SELECT * FROM table WHERE id = 1 AND date > 3;
- 进行路由计算
- </code>
- <code>SELECT * FROM table WHERE id = 1;
- 需要进行全表扫描</code>
- <code> </code>
- <code>SELECT / UPDATE / DELETE 语句如果在 WHERE 条件中带有全部拆分字段,——则拆分字段之间的逻辑关系一定是AND, 不支持OR; 对于同一个拆分字段的条件组合,用 AND 或者 OR 都是支持的。</code>
- <code>SELECT * FROM table WHERE id = 1 AND date > ‘2014/1/30’;
- AND ——正确组合。
- </code>
- <code>SELECT * FROM table WHERE id = 1 OR date > ‘2014/1/30’;
- OR ——错误组合
- </code>
- <code>SELECT * FROM table WHERE id > 1 AND date > ‘2014/1/30’ AND date < ‘2014/3/1’;
- AND ——正确组合
- </code>
- <code>SELECT * FROM table WHERE id > 1 AND date < ‘2014/2/1’ OR date > ‘2014/2/28’;
- AND ——正确组合。date 字段的条件组合是 OR</code>
- <code> </code>
- <code>同一个拆分字段,AND 连接的条件个数只能为2,OR 连接的条件个数不限。</code>
- <code>SELECT * FROM table WHERE date > ‘2014/1/30’ AND date < ‘2014/3/1’;
- 正确,date 字段 AND 连接的条件个数是 2。
- </code>
- <code>SELECT * FROM table WHERE date > ‘2014/1/30’ AND date < ‘2014/3/1’ AND date < ‘2014/2/28’;
- 错误,date 字段 AND 连接的条件个数是 3</code>
- <code> </code>
- <code>同一个拆分字段的条件可以包含多个值,但每个值只能对应一种比较关系。</code>
- <code>SELECT * FROM table WHERE date > ‘2014/1/30’ AND date < ‘2014/3/1’;
- 正确,date 字段两个条件的值分别是 ‘2014/1/30’ 和 ‘2014/3/1’。
- </code>
- <code>SELECT * FROM table WHERE date > ‘2014/1/30’ AND date < ‘2014/1/30’
- 错误,date 字段的条件值 ‘2014/1/30’ 同时对应了大于和小于关系。</code>
- <code> </code>
阿里云分布式关系数据库DRDS笔记
标签: