课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
MySQL数据库的应用在许多软件编程开发项目中都是能够经常见到的一个互联网编程开发技术,而本文我们就简单来了解一下,MySQL数据库SQL语句优化与索引应用。
一、SQL语句的优化
应尽量避免在where子句中使用!=、<、>操作符或对字段进行null值判断,否则将引擎放弃使用索引而进行全表扫描;
只返回必要的列:好不要使用SELECT*语句;
只返回必要的行:使用LIMIT语句来限制返回的数据;
将一个大连接查询分解成对每一个表进行一次单表查询,然后进行关联,这样做的好处有:
让缓存更高效。对于连接查询,如果其中一个表发生变化,那么整个查询缓存就无法使用。而分解后的多个查询,即使其中一个表发生变化,对其它表的查询缓存依然可以使用。分解成多个单表查询,这些单表查询的缓存结果更可能被其它查询使用到,从而减少冗余的查询。减少锁竞争。
二、索引
索引是对数据库表中一列或多列的值进行排序的一种结构(说明是在列上建立的),使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。索引的一个主要目的就是加快检索表中数据,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。
当表中有大量记录时,若要对表进行查询,一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作。二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。
例如这样一个查询:select*fromtable1whereid=10000。如果没有索引,必须遍历整个表,直到ID等于10000的这一行被找到为止。有了索引之后(必须是在ID这一列上建立的索引),即可在索引中查找。由于索引是经过某种算法优化过的,因而查找次数要少的多。可见,索引是用来定位的。
(1)聚簇索引对磁盘上存放数据的物理地址重新组织以使这些数据按照指定规则排序的一种索引(数据的物理排列顺序和索引排列顺序一致)。按照数据存放的物理位置为顺序,每张数据表只能创建一个聚簇索引(因为要改变物理存储顺序),与非聚簇索引相比查询数据速度很快,进行修改的速度较慢。主键索引就是一种聚簇索引。
InnoDB表要求必须有聚簇索引,默认在主键字段上建立聚簇索引,在没有主键字段的情况下,表的一个NOTNULL的索引将被建立为聚簇索引,在前两者都没有的情况下,InnoDB将自动生成一个隐式自增id列并在此列上创建聚簇索引。
(2)非聚簇索引(也叫二级索引/辅助索引)只记录逻辑顺序,并不改变物理顺序。通过索引记录地址访问表中的数据。索引的逻辑顺序和表中行的物理存储顺序不同。Innodb使用的是聚簇索引,MyISam使用的是非聚簇索引。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。