MySQL中where1=1问题

jasmine 于 2019-02-16 发布

1、问题描述

这是一个线上问题,当进行SQL拼接的时候,后面会跟随where1=1条件, (这里也要注意Mybatis框架), select * from xxoo where 1=1, 该语句将数据全部查询出来,当数据量特别大的时候,服务器会挂掉

2、原始方案(优化前)

select * from user where 1 = 1

该中情况数据量大的时候,服务挂掉

3、改进方案(优化后)

xxxxooo:
  query-safety:
    # 默认的最大查询记录条数
    maxRow: 600
    # 是否展示SQL
    showSql: true

编写安全模块,将所有语句后面添加上limit 600;

执行sql如下:

select * from user where 1 = 1 limit 600