mysql中sql优化技巧

在实际应用中,经常会遇到,SQL查询时较慢,或者数据量比较大的时候,查询超时,无奈之下只能加索引,但是有的时候效果却也不是很明显,百度了很多关于sql语句优化的技巧,现在就简单的总结一下吧!
1.将经常用到的字段(比如经常要用这些字段来排序,或者搜索),最好将这些字段设置为索引。
2.字段的种类尽可能用int或者tinyint类型。(种类指码表数据 即:status 01支付成功,02支付失败) 另外字段尽可能的使用NOT NULL 即:字段不为空
3.当然无可避免某些字段会用到text,varchar等字段类型,最好将text字段单独出另外一张表出来(使用主键关联好 即:如果数据库表中要保存text过长的文本字段时,最好在新建一张表,在主表中保存的文本文件 保证新表的uuid进行关联)
4.字段类型,以及长度,是一个很考究开发者优化功能的一个方面。如果表数据有一定的量了,不妨使用PROCEDURE ANAL YES()命令来取得字段的优化建议!(在phpmyadmin里可以查看表时,点击“propose table structure” 来查看这些建议)如此可以让你的表字段结构趋向完善。
5.select * 尽量不用,如果你需要哪些字段,就别嫌费事,对应表字段复制粘贴出来就行了,后期你一定会感激当时勤奋的你。同理,如果你只要一行数据时尽量使用LIMIT1
6.绝对不要轻易使用 order by rand(),很可能会导致mysql的灾难!!
7.每个表都应该设置一个ID主键,最好的是一个INT型的,并且设置上自动增加的AUTO_INCREMENT标志,这个点其实应该作为设计表结构的第一件必然要做的事情!!(我们公司目前使用最广泛的都是UUID()我记得2年前有次面试,当时是列了好多种主键,要求,说一下这些主键的优缺点,现在有点忘记了,等明天总结一下,在发个帖)
8.拆分大的DELETE或者INSERT语句。因为这两个操作是会锁表的,表一担锁住,别的操作就都进不了了,就我来说,我有时候宁愿使用for循环来一个一个的执行这些操作。
9.不要用永久链接 mysql_pconnect();除非你真的非常肯定你的程序不会发生意外,不然很可能导致你的mysql死掉。
10.永远别使用复制的mysql语句来显示你的聪明。就我来说,看到一次关联了三,四个表的语句,只会让人觉得很不靠谱。

简单列了这10点,重点是
1.尽可能建立索引,包括条件列,连接列,外键列等
2.尽可能让where中的列顺序与复合索引的列顺序一致
3.尽可能不要用select * ,只列出自己需要的字段列表
4.尽可能减少了子查询的层数
5尽可能在子查询中进行数据筛选。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值