当前位置:Gxlcms > 数据库问题 > 阿里云分布式关系数据库DRDS笔记

阿里云分布式关系数据库DRDS笔记

时间:2021-07-01 10:21:17 帮助过:2人阅读

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

2.广播表作为Join的驱动表 3.SQL的Limit优化
  1. <code>SELECT *
  2. FROM t_order o
  3. WHERE o.id IN (
  4. SELECT id
  5. FROM t_order
  6. ORDER BY id
  7. LIMIT 10000,2 )</code>

SQL的ORDER BY 优化

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

切分方案

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

 

阿里云分布式关系数据库DRDS笔记

标签:

人气教程排行