zoukankan      html  css  js  c++  java
  • mysql整理

    1.在mysql数据库内如何让自动增加字段从0开始
    truncate table 表名

    2.表中有A B C三列时,用SQL语句实现:当A列大于B列时选择A列,否则选择B列,当B列大于C列时选择B,否则选择C列
    select case when A > B then A else B end, case when B > C then B else C end;

    3.Redis
    Redis是一个key-value存储系统。支持五种数据类型:
    (1)string(字符串)
    (2)list(列表)
    (3)hashhash表)
    (4)set(集合)
    (5)zset(有序集合)

    4.MyISAMInnoDB的区别
    MyISAM特点
    (1)不支持事务、外键
    (2)支持表级锁,不支持行级锁
    (3)拥有较高的查询效率
    InnoDB特点
    (1)支持事务、外键
    (2)支持行级锁,并发性更高,需要的花销也更高
    如果执行大量的selectMyISAM速度更快,如果执行大量的insertupdateInnoDB速度更快。执行select count(*) from table时,MyISAM只是简单的读出保存好的行数,而InnoDB要扫描整个表来计算有多少行,如果执行select count(*) from table where...,两种存储引擎的操作是一样的。

    5.索引
    索引在数据库中的作用是快速找到某个列。不使用索引的话,MySQL必须从第一条记录遍历导相关的行,索引能快速的达到某个位置取搜索数据文件。
    四种索引分类:
    (1)普通索引:最基本的索引,没有任何的限制
    (2)唯一索引:和普通索引类似,索引值必须唯一,但允许有空值
    (3)主键索引:主键,特殊的唯一索引
    (4)组合索引:将多列作为索引,用于组合搜索

    索引特点:
    索引能让查询数据的速度上升,而使写入数据的速度下降。
    索引不会包含有NULL值的列,所以在数据库设计的时候不要让字段的默认值为NULL
    一般情况下不鼓励使用like操作,like "%aaa%"不会使用索引,而like "aaa%"可以使用索引
    不要在列上进行运算

    缺点:
    (1)创建索引和维护索引需要时间成本
    (2)创建索引需要占据磁盘的空间
    (3)会降低表的增删改的效率

    6.MySQL查询性能优化
    (1)避免向数据库请求不需要的数据。避免使用select *这种方式进行查询,应该只返回需要的列。
    (2)查询数据的方式。可以通过添加合适的索引改善查询数据的方法
    (3)分解大的查询。可以将一个大查询切分为多个小查询执行,比如将一个关联查询分解成多个单表查询
    (4)用IN()代替OR。对于IN()的列表中有大量取值的时候,用IN()替换OR更快
    (5)排序优化。应该尽量让MySQL使用索引进行排序
    (6)子查询优化。尽可能用关联查询替换子查询,可以提高查询效率
    (7)优化MIN()MAX()。对对应字段添加索引

    7.优化mysql数据库的方法
    四个层面:
    (1)SQL及索引层面
    (2)数据库表结构层面
    (3)系统配置层面
    (4)硬件配置层面

    SQL及索引层面:
    (1)使用MySQL慢查询日志slow_query_log.log对有效率问题的SQL进行监控
    (2)使用explain查询SQL的执行计划
    (3)count()Max()的优化;
    (4)使用有索引的列或主键进行Order by操作
    (5)使用JOIN来代替子查询
    (6)使用联合UNION来代替手动创建的临时表

    如何建立合适的索引:
    (1)在where从句,group by从句,order by从句,on从句中出现的列
    (2)索引字段越小越好
    (3)离散度大的列放在联合索引前面

    数据库表结构层面:
    (1)使用可以存下你的数据的最小的数据类型
    (2)使用简单的数据类型,int要比varchar类型处理上更简单
    (3)尽可能的使用not null定义字段
    (4)尽量少用text类型

  • 相关阅读:
    Dubbox小案例
    Maven项目
    网络命名空间和网桥的基本操作命令
    基于容器制作镜像
    docker命令的基本操作
    hbase 的一些坑
    并查集
    二叉树的递归遍历和非递归遍历
    比较器的使用
    用数组结构实现大小固定的队列和栈
  • 原文地址:https://www.cnblogs.com/jackw1/p/12581121.html
Copyright © 2011-2022 走看看