zoukankan      html  css  js  c++  java
  • mysql设计-优化

    mysql表复制

    1.复制表结构
    create table student like user;
    2.复制表内容
    insert into t3 select * from t1;

    mysql索引

    1.查看索引
    show index from userG

    2.普通索引
    1)创建
    create index i_age on user(age);
    2)删除
    drop index i_age on user;
    3.唯一索引
    1)create unique index u_username on user(username);
    2)drop index u_username on user;
    4.主键索引
    --去除auto_increment 主键不能modify
    alter table user modify id int unsigned;
    1)创建(要自增必须主键)
    alter table table_name add primary key (column_list)
    2)删除
    alter table table_name drop index index_name
    alter table table_name drop primary key

    mysql视图

    视图相当于截图 会随着表变化而变化 没有存储任何数据
    1.创建
    create view userclass as select user.username,user.age,class.name from user,class where user.class_id=class.id;
    2.删除
    drop view userclass;
    3.查看
    show tables ;
    4.
    select * from userclass;

    mysql查看表中未来的自增数
    show create table user;

    mysql内置函数

    1.mysql字符串函数
    CONCAT(string [,...]) //连接字符串
    LCASE(string2) //转换成小写
    UCASE(string2) //转换成大写
    LENGTH(string) //string长度
    LTRIM(string2) //去除前端空格
    RTRIM(string2) //去除后端空格
    REPEAT(string2,count) //重复count次
    REAPEAT(str,search_str,replace_str) //在str中用replace_str替换search_str
    SUBSTRING(str,position,[,length]) //position开始 取length个字符
    SPACE(count) //生成count个空格

    2.数学函数
    bin() //把某一个数转换为二进制
    ceiling() //取上一个整数
    floor() //取下一个整数
    select floor(10.5);

    max() //取最大整数
    select max(id) from user;

    min() //取最小整数
    sqrt() //平方根
    rand() //随机数

    3.日期函数
    curdate()
    curtime()
    now()
    unix_timestamp()
    from_unixtime()
    week(date)
    year(date)
    datediff()

    mysql

    sql语句优化
    1)优化SQL语句的一般步骤
    2)索引优化
    3)check与optimize使用方法
    4)常用sql优化
    检查服务器增删查改使用频次 自启动以来
    show status like "%InnoDB_rows%";

    通过show status命令了解各种sql执行效率
    格式:show[session|global]status;
    session(默认)表示当前连接
    global表示自数据库启动至今
    show status;
    show global status;
    show status like 'Com_%';
    show global status like 'Com_%';

    定位执行效率较低的sql语句
    1.explain或desc定位一条sql语句的影响行数
    desc select * from user where id=1G
    desc select * from user where username='weizai'G

    mysql慢查询

    1.查看慢查询次数
    show status like "%quer%";
    Slow_queries | 0

    2.修改慢查询时间(my.ini)
    long_query_time=6

    show variables like "%query%";
    附录:批量插入数万条测试数据(存储过程)
    mysql> delimiter $$
    mysql> create procedure ptest()
    -> begin
    -> declare pid int ;
    -> set pid = 1000000;
    -> while pid>0 do
    -> insert into ...... --插入语句
    -> set pid = pid-1;
    -> end while;
    -> end $$
    mysql> delimiter ;
    mysql> call myFunction();//调用存储过程

    优化表空间:

    1.optimize table sales;
    1).myisam表没有问题
    2).innodb表ibdata1文件无法回收空间

    索引

    create index ind_company2_name on company2(name(4))
    索引的存储分类
    1).myisam
    2).innodb

    索引用于快速找出某个列中有特定值的行 对相关列使用索引是提高select操作性能的最佳途径
    1.使用索引
    1)对于创建的多列索引 只要查询的条件中用到最左边的列
    索引一般会被使用

    如下复合索引(比较少)
    create index ind_sales2_com_mon on sales2(company_id,moneys);
    然后按照company_id进行查询 发现使用了复合索引
    explain select * from sales2 where company_id=2006G
    使用下面的查询就没有使用到复合索引
    explain select * from sales2 where moneys=1G

    2)like关键词
    当使用like进行搜索时 %在前索引可能会失效
    desc select * from student_big where username like '%inux%'G
    desc select * from student_big where username like 'linux%'G

    3)如果对大的文本进行搜索 使用全文索引而不使用like % %

    4)如果列名是索引 使用column_name is null将使用索引

  • 相关阅读:
    Learning_the_bash_Shell_Third_Edition 15/n
    Learning_the_bash_Shell_Third_Edition 14/n
    Learning_the_bash_Shell_Third_Edition 13/n
    cvb源码分析,resful规范,drf,drf序列化组件,95
    rest_framework登录组件,权限组件
    forms组件
    分页器
    基于ajax提交数据
    回顾django内容
    多表操作
  • 原文地址:https://www.cnblogs.com/weizaiyes/p/8965842.html
Copyright © 2011-2022 走看看