数据库如何优化

数据库如何优化

  1. explain 联合索引 最左前缀原则
  2. Innodb 辅助索引 id name age
  3. 遵循索引设计的7大原则
  4. 不要写导致索引失效的sql语句
    索引 --》 查找算法 有一个精确的数据让我们去查找 —》 退化全表查询
    select id from user where age = 50;
    (1)where 语句上写了函数
select id from t where substring(name,1,3)='abc'

(2)where 语句上写了算数运算

 select id from t where num/2=100
(3)`where in  not in `
(4)or  || 
(5)like %abc;  abc%   
        abc%  abcd abce abcdef abcder        
  1. 配置层修改:windows my.ini Linux my.cnf
    (1)查询缓存
    select id from user where name = ?
    (2)索引缓存 数据缓存(Innodb)
    MyISAM 不支持数据缓存
    (3)线程缓存

    mysql C/S C语言 IO复用 select poll epoll
    ----》 selector NIO 线程池
    线程:线程数量 = cpu的核数 * (1+io耗时/cpu耗时)

  2. 代码层的优化
    (1)连接池 提供对连接的统一化管理
    c3p0 —> 自己实现一个连接池
    存放连接的容器connection 第一个用户创建新的连接
    第二个用户请求 maxPollSzie 10
    minPollSzie = 5 ideltime 空闲的连接杀死掉
    (2)preperdStatement 预编译的sql 执行手段
    需要再第一执行 编译 查询计划进行缓存
    预编译:sql执行计划
    (1)只在第一次执行的时候需要编译 效率更高
    (2)防止 sql 注入的异常
    (3)代码书写和维护上更加便捷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值