1. 定位问题
      1. 最慢查询
      2. 最多查询
    2. 实例优化

    实例1:

    1. select
    2. a.date_str,
    3. a.shopCode,
    4. a.add_car_pv,
    5. (
    6. select
    7. b.shop_type
    8. from
    9. dp_shop b
    10. where
    11. a.shopCode = b.shop_code
    12. ) shop_type
    13. from
    14. dp_car_copy a
    15. order by
    16. a.sjopCode,
    17. a.add_car_pv,
    18. a.date_str
    19. dp_car_copy: 197w
    20. dp_shop:3.2W

    执行时间:35.437 s
    优化:(方式:1.硬件 ,2.MySQL服务器优化【操作系统】,3.sql本身优化,4.反范式设计优化,5.索引优化)
    步骤一:SQL本身【关联子查询 -> 关联查询】

    1. select
    2. a.date_str,
    3. a.shopCode,
    4. a.add_car_pv,
    5. b.shop_type
    6. from
    7. dp_car_copy a,
    8. dp_shop b
    9. where
    10. a.shopCode = b.shop_code
    11. order by
    12. a.sjopCode,
    13. b.shop_type,
    14. a.add_car_pv,
    15. a.date_str

    执行时间:13.920 s
    步骤二:反范式化设计【适当增加冗余,提高查询速度】空间换时间

    1. 两表冗余为单表:
    2. select
    3. a.date_str,
    4. a.shopCode,
    5. a.add_car_pv,
    6. a.shop_type
    7. from
    8. dp_car_copy2 a
    9. order by
    10. a.sjopCode,
    11. a.shop_type,
    12. a.add_car_pv,
    13. a.date_str

    执行时间:6.701 s
    步骤三:索引【】

    1. create index idx_query //创建索引
    2. on dp_copy2(date_str,shopCode,shop_type,add_car_pv)

    执行步骤二SQL
    执行时间:7.795 s

    1. select
    2. a.date_str,
    3. a.shopCode,
    4. a.add_car_pv,
    5. a.shop_type
    6. from
    7. dp_car_copy2 a
    8. where
    9. a.date_str > '2018-01-01',
    10. and a.date_str <= '2018-08-10'
    11. order by
    12. a.sjopCode,
    13. a.shop_type,
    14. a.add_car_pv,
    15. a.date_str
    16. 数据:16w

    执行时间:0.881 s