1、sql语句中尽量不使用子查询,因为使用子查询数据库要在内存中建立临时表,消耗资源。
2、sql语句中最好不要出现“ * ”来代替已知字段,即使是要查询所有字段也要写出每一个字段。
3、合理建立索引:
索引可以非常大程度加快数据库检索速度,但是建立索引并不是越多越好,过多的索引会对增删改的性能造成影响。
4、优化查询语句,减少like的使用,尽量不要全盘扫秒。
5、使用联合查询(UNION)来代替手动创建的临时表。
6、优化表结构,减少长字段的创建,尽量较少NULL值的出现,NULL值会使索引以及索引的统计信息变得很复杂,可以使用0或者空字符串来代替。
7、使用索引后可以不用全表扫描来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据
8、对于查询比较慢的SQL,用explain这个命令来查看SQL语句的执行计划,如下我遇到过的一个SQL,可以看到SQL语句并不复杂,但是查询时间用了37m
SELECT
TRANS_TIME,
BEGIN_TIME,
NODE_NAME,
UNIT,
ITEM_VALUE
FROM
SM_NODAL_PRICE_REAL_ELECGEN
WHERE
ISDELETE = 0
AND TRADING_CENTER_CODE = 'aaf05cecb69e44c787ef28e3c8bf7128'
AND USER_ORG LIKE '001005001%'
AND TRANS_TIME = '2020-08-19 00:00:00.0'
下面是执行计划: