mysql- 优化

一 数据类型优化 :

在创建某个字段的时候,尽量选择该数据能存的最小数据类型,

1、整型比字符操作代价更低,因为字符集和校对规则是字符比较比整型比较更复杂,

2、使用mysql自建类型而不是字符串来存储日期和时间

3、用整型存储IP地址

列:具体需要找类型优化

varchar(1),int(1) ()

varchar(5),varchar(255) (他们在硬盘存的大小一致,但是内存中是设置长度的大小)

mysql的整数类型(TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT分别使用8,16,24,32,64) 都有一特点,他们的int(x) x不是长度,不管设置的x是几,会在硬盘中存一个他们的固定长度,8,16,24,32,64。

所以INT(1)与INT(11)后的括号中的字符表示显示宽度,整数列的显示宽度与MySQL需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,INT类型的字段能存储的数据上限还是2147483647(有符号型)和4294967295(无符号型)。其实当我们在选择使用INT的类型的时候,不论是INT(1)还是INT(11),它在数据库里面存储的都是4个字节的长度。

二  索引优化

数据库存储数据的时候,分为数据页,和索引页。

1:如果不建立索引,会直接去数据页去一个个对比

2:如果建立的索引,先去索引页查询,在通过索引页对应到的数据页去查询数据页

如果我现在有查询1000条数据,这个表就有1000条数据,这样用索引是不是就慢,前提不是索引覆盖,

如果这个表有100000 是不是就体现了索引的价值

1.添加PRIMARY KEY(主键索引,主键索引会把数据,也存在索引页中,索引一般用主键存查询会很快) 
mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 
2.添加UNIQUE(唯一索引) 
mysql>ALTER TABLE `table_name` ADD UNIQUE ( 
`column` 

3.添加INDEX(普通索引) 
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) 
4.添加FULLTEXT(全文索引) (只有MyISAM  引擎)
mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`) 
5.添加多列索引 
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

三 索引匹配方式:

如果设置的索引是 name,age,pos。

1:全值匹配
    全值匹配指的是和索引中的所有列进行匹配
        explain select * from staffs where name = 'July' and age = '23' and pos = 'dev';
2:匹配最左前缀
    只匹配前面的几列(只能按照顺序索引,顺序必须是 name,age,pos,如果where按照 pos,name,age将不能执行索引查询)
        explain select * from staffs where name = 'July' and age = '23';
        explain select * from staffs where name = 'July';
3:匹配列前缀 (这样查询虽然用到索引了但是相比于全职匹配速度还是慢)
    可以匹配某一列的值的开头部分
        explain select * from staffs where name like 'J%';
        explain select * from staffs where name like '%y';
4:匹配范围值(因为第一个是name,之后的匹配都不算索引)
    可以查找某一个范围的数据
        explain select * from staffs where name > 'Mary';
5:精确匹配某一列并范围匹配另外一列
    可以查询第一列的全部和第二列的部分
        explain select * from staffs where name = 'July' and age > 25;

四 常见sql使用索引

发布了143 篇原创文章 · 获赞 41 · 访问量 59万+

猜你喜欢

转载自blog.csdn.net/qq_29257691/article/details/103768426