mysql 调优

tip:mysql  如何实现调优

  1)数据库设计要合理(遵循第三范式3f)

  2)添加索引(普通索引、主键索引、唯一索引、全文索引)

       a. 普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHEREcolumn=)或排序条件(ORDERBYcolumn)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引 /

         create index 索引名 on 表 (列1,列名2);

       b.主键索引  (create table bbb (id int , name varchar(32) not null default '');

                           ALTER TABLE tablename ADD PRIMARY KEY (列的列表))、

                           alter table articles drop primary key;

       c.唯一索引 (这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一;

                          CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表)

                          ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表)

                          create table ddd(id int primary key auto_increment , name varchar(32) unique);

                           )

         d.全文索引( 

           

CREATE TABLE articles (
       id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
       title VARCHAR(200),
       body TEXT,
       FULLTEXT (title,body)
     )engine=myisam charset utf8;

INSERT INTO articles (title,body) VALUES
     ('MySQL Tutorial','DBMS stands for DataBase ...'),
     ('How To Use MySQL Well','After you went through a ...'),
     ('Optimizing MySQL','In this tutorial we will show ...'),
     ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
     ('MySQL vs. YourSQL','In the following database comparison ...'),
     ('MySQL Security','When configured properly, MySQL ...');
错误用法:
select * from articles where body like '%mysql%'; 错误用法 索引不会生效
正确用法:
select * from articles where match(title,body) against ( 'database')
说明:
在mysql中fulltext 索引只针对 myisam生效
mysql自己提供的fulltext针对英文生效->sphinx (coreseek) 技术处理中文
使用方法是 match(字段名..) against(‘关键字’)
全文索引:停止词,  因为在一个文本中,创建索引是一个无穷大的数,因此,对一些常用词和字符,就不会创建,这些词,称为停止词.比如(a,b,mysql,the)
mysql> select match(title,body) against ('database') from articles;(输出的是每行和database的匹配度)

 e:优点:提升程序效率

         缺点:增加、删除慢  索引文件要更新、增加内存

)

 f:什么时候适合建索引:(查询次数比较多,值有非常多 不同)

g:索引的注意事项

          1)、使用组合索引,第一个条件可以不和第二个条件一起  可以使用组合索引,反之则不行。

          2)、查询的时候使用like ‘%%’ 会全表扫码,不使用索引 ,like '%' 可以使用索引。

          3)、用 or  条件必须加索引。

          4)、判断条件是否为null  的时候  使用  is  null   否则不使用索引。

          5)、group by 的时候 不使用索引。

          6)、提高分组效率,添加  order by  null。

          7)、使用    》= ,!=会查询多次  不使用索引  会全表扫描。

          8)、in   not  in   不使用索引   全表扫描

          9)、查询量大,使用缓存  、分表 、分页  、缓存

  3)分表分库技术(取模分表、水平分割、垂直分割)

  4)读写分离

  5)存储过程

  6)配置mysql  最大连接数(my.ini)

  7)mysql 服务器升级

  8)随时清理碎片化

  9)sql 语句调优

 

以上红色部分是特别要注意的内容;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值