简单的mysql优化

mysql的优化

1.建立索引

索引可以加快查询速度,但是对于插入的性能有略微影响,因为插入的时候还要保存索引;
mysql中共有4种索引:
①主键索引 primary key : 主键,唯一
②唯一索引 unique key: 是指一个表中不能有同名的列,但是一列中可以有相同的数据
③常规索引 key/index: 通常用于经常出现在查询条件的列或排序条件的列中,如经常需要按年龄查找,或者按城市分组:wehere age >18或group by city;那么age和 city就应该设置普通索引。
④全局索引 fulltext: 一般不用
增加索引的方法:
alter table 表名 add 索引种类 索引名(可省略) (字段名)
如: ALTER TABLE student ADD INDEX (sname)
create index 索引名 on 表名(字段名)

查看表中的索引:

SHOW INDEX FROM student

删除索引

DROP INDEX sname_3 ON student    --sname_3是索引名,student是表名

带有条件的查询,如果有索引,执行时直接定位到指定位置,如果没有索引则遍历,mysql底层为B+树。

2.使用mysql的缓存

大多数的MySQL服务器都开启了查询缓存。这是提高性能最有效的方法之一,而且这是被MySQL引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放入一个缓存中,这样后续的相同查询就不用操作而直接访问缓存结果了。
这里最主要的问题是,对于我们程序员来说,这个事情是很容易被忽略的。因为我们某些查询语句会让MySQL不使用缓存,示例如下:
1:SELECT username FROM user WHERE signup_date >= CURDATE()
2:SELECT username FROM user WHERE signup_date >= '2021-05-02‘
上面两条SQL语句的差别就是 CURDATE() ,MySQL的查询缓存对这个函数不起作用。所以,像 NOW() 和 RAND() 或是其它的诸如此类的SQL函数都不会开启查询缓存,因为这些函数的返回是会不定的易变的。所以,你所需要的就是用一个变量来代替MySQL的函数,从而开启缓存。

3.explain分析sql的执行情况

使用下面的语句可以查看sql语句的执行情况,从而可以帮助我们调节,选择最合适的索引,以得到最高效地查询。具体可参考链接博客

explain + select语句;

4.使用limit

当只查找一行数据时使用limit 1,查到数据即返回结果,没必要继续执行了

5.使用join

多表联合查询的时候尽量使用join,而不使用子查询等。

6.尽量不使用select *

需要哪些列就select 哪些列

7.vchar类型的使用

使用vchar(n)时,n的大小要选取合适,在能存储完整数据的原则下尽量选择小

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值