sql性能优化

sql性能优化

1、当x越来越大时,因为会查询出x跳记录然后过滤出需要的y条,查询效率会显著降低,为此,有几下集中解决方案:

1先查出上一页结束的数据记录:
SELECT * FROM table WHERE id>= (SELECT id FROM table LIMIT 1000000, 1) LIMIT 10`
2.如果id是连续的,建议使用between
SELECT * FROM table WHERE id BETWEEN 1000000 AND 1000010;
3.还有一种,可以在查询下一页时把上一页的行id作为参数传递给客户端程序,然后sql就改成了
select * from table where id>3000000 limit 10;

2、对查询优化,应尽量避免全表扫描,首先应考虑在where order by列上建立索引。

3、不使用NULL,使用默认值类似于0

4、where子句中避免使用!=或<>、IN、LIKE 操作符

5、少使用or (可能会造成不走索引) 可以换成 union 连接语句 :select id from t where num=10 union all select id from t where num=20。

6、 能用between 就不用 in

7、where尽量不放表达式和函数

8、exists可以替代in 和 count

9、数值类型会比字符串类型 查询和连接的性能上快,存储开销小。

10、 varchar/nvarchar 和 char/nchar 可变长字段存储空间小,可以节省存储空间

11、不用用*,使用点出字段的方式,这样就不会多一层转换

12、使用链表查询时,请使用别名,这样会少一层转换,以及不会让各表的字段出现争议。

13、临时表可以在合适的场合使用

14、可以将数据处理放在服务器上,服务器的内存也可以考虑,这样会大大增加性能

15、能使用批量插入、批量修改(不造成问题的情况下),就使用

16、sql语句字段能大写就大写,因为数据库最后是会转换为大写的

17、事物时间尽量缩小,避免死锁

18、MySQL高速查询缓存

19、EXPLAIN 可以查看 语句使用索引的程度

20、任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边,这样不会让索引失效.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值