zoukankan      html  css  js  c++  java
  • mysql的常用优化知识

    索引类型:主键索引,唯一索引,联合索引,普通索引,全文索引

    建立索引: create index index_name on table(field_name);

    删除索引: drop index index_name on table;

    查看索引: show index from table;

    建立索引:

    alter table 数据库add index 索引名称(数据库字段名称)
    PRIMARY KEY(主键索引)
    ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
    UNIQUE(唯一索引)
    ALTER TABLE `table_name` ADD UNIQUE (`column`)
    INDEX(普通索引)
    mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

    1.  一个列上建立索引后,如果是以like查询,百分号在左边则利用不上索引。好比  select a from t where bb like '%hehe';这种情况,bb有索引也用不上。。

    2.  如果利用or关键字的话,左右两边有一个字段没索引就利用不上。好比  select a from t where b=1 or c=2;这种情况,如果b或c有一个没建立索引,就用不上索引。

    3.  group by 的时候默认会有个排序,排序很费性能,如果不必要的话,可以加上一句  order by null。这样好些。顺便order by 经常排序的字段加个索引也好多。

     (查看sql是否用上了索引,可以通过explain sql进行查看。)

    4.  一个字段的数据类型,能满足业务要求的情况下,越小越好。。比如ENUM的使用比varchar好多。

    5.  在财务系统或者金钱上,小数保存使用decimal,最好都这么用。。

    6.  如果业务上自己知道要查出一条就ok的话,最好sql上加一句limit 1

    MyISAM存储引擎下,索引 是 .MYI文件。。数据存在.MYD文件。。.frm是表结构文件(innodb也有这个)。

    MyISAM 和 Innodb的区别  详细可以参考:http://www.oschina.net/question/17_4248

    MyISAM 删除delete的时候数据库文件大小不会啥变化,需要执行optimize table才会清掉碎片。。表级锁。

    Innodb 中存在表的数据会在外头有个文件ibdata1 里,不在.MYD文件里。不像是MyISAM。支持事务。支持外键。一般行级锁。

    这个讲数据库文件不错,myisam和innodb的数据文件存放

    http://fuwenchao.blog.51cto.com/6008712/1344854

    顺便自己测试的时候,快速造数据的一个sql,利用自己表的数据翻倍增加:

    #表名:table;字段id(auto_increment primary key) title
    insert table (id, title) (select null,title from table);#注意没有values的关键词和null的用法

    mysql的主从复制和读写分离:

    这两篇文章写得不错~

    http://heylinux.com/archives/1004.html

    http://www.cnblogs.com/itech/archive/2011/09/22/2185365.html

    读写分离mysql配置,需要主服务器(处理更新写请求),从服务器(处理读请求,并与主服务器进行数据同步),和代理服务器(处理mysql请求,根据sql分辨出哪些是读,哪些是写,然后分派给不同的mysql服务器)

    mysql proxy代理服务器的配置脚本是个lua脚本。

     

    -

  • 相关阅读:
    LeetCode(287)Find the Duplicate Number
    LeetCode(290) Word Pattern
    LeetCode(205)Isomorphic Strings
    LeetCode(201) Bitwise AND of Numbers Range
    LeetCode(200) Number of Islands
    LeetCode(220) Contains Duplicate III
    LeetCode(219) Contains Duplicate II
    命令行执行Qt程序
    LeetCode(228) Summary Ranges
    redis 的安装和使用记录
  • 原文地址:https://www.cnblogs.com/firstForEver/p/4943368.html
Copyright © 2011-2022 走看看