MySql索引及SQL优化手段

来源:互联网 发布:mac地址修改器.exe 编辑:程序博客网 时间:2024/06/03 15:29

普通索引   添加INDEX

ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

主键索引   添加PRIMARY KEY

ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )

唯一索引    添加UNIQUE

ALTER TABLE `table_name` ADD UNIQUE ( `column` )

全文索引    添加FULLTEXT

ALTER TABLE `table_name` ADD FULLTEXT ( `column`)

如何添加多列索引

ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )


优化手段(部分)

1. 选择率高的字段才需要建索引
2. 不使用is not null     ALL(is null        ref
3. 不使用!=或<>        ALL
4. 建议不使用or        range,用union替代
4. 不使用not in        ALL(in        range    (between and)
5. 不在where进行字段运算    ALL
6. 建议exists 代替in(注意两边表的数量多少)

EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
EXISTS(包括 NOT EXISTS )子句的返回值是一个BOOL值。 EXISTS内部有一个子查询语句(SELECT ... FROM...), 我将其称为EXIST的内查询语句。
其内查询语句返回一个结果集。 EXISTS子句根据其内查询语句的结果集空或者非空,返回一个布尔值。
一种通俗的可以理解为:将外查询表的每一行,代入内查询作为检验,如果内查询返回的结果取非空值,则EXISTS子句返回TRUE,这一行行可作为外查询的结果行,否则不能作为结果。

原创粉丝点击