建索引的原则:
1.经常出现在where字句上的字段加索引。
2作为两表连接条件的字段加索引(因为执行sql语句时,先执行from字句,然后自行join on)
3.经常根据某个字段进行order by ,则给这个字段添加索引。
4.不应该给小表加索引(浪费内存)。
group by 的使用规则:
在使用group by 时,有一个规则需要遵守,即出现在select列表中的字段,如果没有在组函数中,那么必须出现在group by 子句中。(select中的字段不可以单独出现,必须出现在group语句中或者在组函数中。)
查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数
创建索引:
create index in_name on tab_student (name);
通过索引提高查询性能
1.不使用IS NULL或者IS NOT NULL于添加索引的字段。这样会使索引失效。
2.当索引的字段作为where作为条件时,要让这个字段的前半部分暴露出来,否则索引失效。
3.索引不要进行算数运算,以为计算完后字段值变了,索引失效。
4.不要在索引字段使用!=,<>
5.用UNION替换OR(适用于索引列)
union:是将两个查询的结果集进行追加在一起,它不会引起列的变化。 由于是追加操作,需要两个结果集的列数应该是相关的,
并且相应列的数据类型也应该相当的。union 返回两个结果集,同时将两个结果集重复的项进行消除。 如果不进行消除,用UNOIN ALL.
通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果. 对索引列使用OR将造成全表扫描. 注意, 以上规则只针对多个索引列有效.