mysql上亿数据秒级查询 mysql查询最后一条数据的id


mysql上亿数据秒级查询 mysql查询最后一条数据的id

文章插图
在数据库操作中,常常需要完成既定数据的检索 。少量数据存放在表中,只需使用基本的SQL语句即可检索得到 。但当数据量较大时,受MySQL数据库底层实现原理的限制,缺省的SQL语句,检索效率较低 。
例如:当执行”select * from employee where empno= 520000″语句按员工号查询时,MySQL数据库默认的处理方式是从第一条记录开始依次向后遍历,直到找到id为520000的数据 。这样,查找的效率随着数据量的增大,而逐步降低 。为此,MySQL数据库在建表时允许通过创建索引来加快数据表的查询、排序等相关操作 。
什么是索引在MySQL数据库中,索引和表、视图、同义词等类似是数据库”对象”的一种 。可看做字典的目录 。是对数据库表中一列或者多了的值进行排序后的一种结构,其作用就是提高表中的数据查询速度 。MySQL中的索引分为如下几种:
1. 普通索引
普通索引是由key或index定义个索引,它是MySQL中的基本索引类型,可以创建在任何数据类型中 。其值是否唯一和非空有字段本身的约束条件所决定 。例如,在student表的id字段上建立一个普通索引,查询记录时,就可以根据该索引查询,从而提高效率 。
2. 唯一性索引
唯一性索引是指由unique定义个索引,该索引所在字段的值必须是唯一的 。例如,在grade表的stu_id字段上建立唯一性索引,那么stu_id字段的值就必须是唯一的 。
3. 全文索引
全文索引是由fulltext定义的索引,它只能创建在char、varchar或text类型的字段上 。并且现在只有MyISAM存储引擎支持全文索引 。
4. 单列索引
单列索引指的是在表中单个字段上创建索引,它可以是普通索引、唯一索引或者全文索引,只有保证该索引只对应表中一个字段即可 。
5. 多列索引
多列索引是指在表的多个字段上创建索引,只有在查询条件中使用了这些字段中的第一个字段时,该索引才会被使用 。如,在student表的id、name和score字段上创建一个多列索引,那么只有查询条件中使用了id字段时,该索引才会被使用 。
相较于单列索引,当我们频繁的需要同时检索表中多列时,多列索引的效率会高很多 。
6. 空间索引
空间索引是由spatial定义的索引,它只能创建在空间数据类型的字段上 。MySQL中的空间数据类型有4种:geometry、point、linestring和polygon 。需要注意的是,创建空间索引的字段,必须将其声明为NOT NULL,并且空间索引只能在存储引擎为MyISAM的表中创建 。
需要注意的是,虽然索引可以提高数据的查询效率,但索引会占用一定的存储空间 。并且创建和维护索引所消耗的时间,是随着数据量的增加而增加的 。因此,使用索引时,应综合考虑其优缺点,不能肆意创建 。
索引的生成要想使用索引提高数据表的访问速度,首先要创建一个索引 。创建索引的方式大致可分为三种 。
创建表指定索引在MySQL中,创建表时可以直接给表的指定字段指定索引,这种方式需在建表之初就预设了数据即将被频繁检索的场景,其基本语法格式如下所示:
create table 表名 (字段名 数据类型 [完整性约束条件],
字段名 数据类型 [完整性约束条件],
……
字段名 数据类型
[unique|fulltext|spatial] index|key
[别名] (字段名1 [(长度)]) [asc|desc]
);
相关语法解析:
1) unique:可选参数,表示唯一索引 。
2) fulltext:可选参数,表示全文索引 。
3) spatial:可选参数,表示空间索引
4) index和key:用来表示字段的索引,二者选一即可 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: