专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

什么是索引回表_数据库

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 13:33:23       共计:3566 浏览

什么是索引回表?

首先,数据库中的索引是什么?

引用高性能mysql中的一句话:索引(mysql也叫作键(key))是存储引擎用于快速找到记录的一种数据结构。

这句话有两个点:存储引擎和数据结构。首先理解索引是在存储引擎层而非服务器层实现。而mysql分为多种存储引擎,这里我们只探讨myisam 和InnoDB。两者都支持B+Tree(一种数据结构)索引。

如果说这个理解不了,还有一个通俗易懂的方法。书都有目录,快速找到自己需要内容的方法,就是查看目录,索引就是数据库表数据的目录。

回归问题:索引引发的回表问题。索引为啥会引发回表?

下面我们来假设一种情况,一个表有三个字段 ID ,name ,age,将ID设置成主键索引,name设成辅助索引。

然后来看一下下面的sql:

1.select * from t where id='5';

2.select * from t where name='张三';

两个很简单的Sql。

第一个sql不用说,直接通过主键索引,从树上直接可以得到结果。

第二个sql:首先name,mysql并不能得到所有列的信息(也就是*),只能得到主键ID,然后会根据ID在进行二次查询,这就引发了回表问题。这就是为啥不能使用*的原因。

那么怎么解决呢?

第一不要写*。

第二利用组合索引,也就是说你根据业务实际需要,将需要的字段形成组合索引。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:mysql不允许访问_数据库 | ·下一条:mysql查询in为什么用不上索引_数据库

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有