高效索引策略
1、独立的列
始终将索引列放比较符合的一侧
2、选择性高的索引
尽量将选择性高的列做索引
3、多列索引
当服务器对多个索引做相交操作时,通常需要一个包涵所有相关列的多列索引而不是多个独立的单列索引。
4、选择合适的索引列顺序
在一个多列B-tree索引中,索引列的顺序意味着索引首先按照最左列进行匹配,其次是第二列索引,等等。
通常将选择性高的索引放最左侧但是不全是如此。
当不需要考虑排序和分组的时候,将选择性高的索引放最左侧通常是很好的选择。
select count(*),sum(groupId=10137),sum(userId=22),sum(anonymous=0) from message\G
5、覆盖索引
如果一个索引包含(或者说覆盖)所有需要查询的字段的值,我们就称之为覆盖索引;覆盖索引最大的优点是只需要扫描索引而不需要回表查询,极大的提高性能。
sql语句语法
1:删除列
ALTER TABLE 【表名字】 DROP 【列名称】
ALTER TABLE so_saleorder_detail DROP overArrivalTime;
2:增加列
ALTER TABLE 【表名字】 ADD 【列名称】 INT NOT NULL COMMENT '注释说明'
3:修改列的类型信息
ALTER TABLE 【表名字】 CHANGE 【列名称】【新列名称(这里可以用和原来列同名即可)】 BIGINT NOT NULL COMMENT '注释说明'
4:重命名列
ALTER TABLE 【表名字】 CHANGE 【列名称】【新列名称】 BIGINT NOT NULL COMMENT '注释说明'
5:重命名表
ALTER TABLE 【表名字】 RENAME 【表新名字】
6:删除表中主键
Alter TABLE 【表名字】 drop primary key
7:添加主键
ALTER TABLE sj_resource_charges ADD CONSTRAINT PK_SJ_RESOURCE_CHARGES PRIMARY KEY (resid,resfromid)
8:添加索引
ALTER TABLE sj_resource_charges add index INDEX_NAME (name);
9: 添加唯一限制条件索引
ALTER TABLE sj_resource_charges add unique emp_name2(cardnumber);
10: 删除索引
alter table tablename drop index emp_name;