云开发,如何建立嵌套索引-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

云开发,如何建立嵌套索引

2020-06-03 13:14:42 172 1

"params": [{ "name": "用户管理", "path": "users", "order": 1, "children": [{ "name": "用户列表", "path": "users", "children": [], "order": 1 }] }, 数据如上。云开发时,希望对每个children再建立一个索引,请问如何建立?

取消 提交回答
全部回答(1)
  • 游客2q7uranxketok
    2021-02-22 13:26:33

    假设两张表t1(c1 int,c2 int),t2(d1 int,d2 int),查询语句为select c1,d1 from t1 inner join t2 on c1=d1。如果数据库没有实现散列连接、合并连接的话,只能选择使用嵌套循环。从上篇文章中我们可以得到,对于t1的每一条记录,都需要遍历t2的每一条记录。因此,当t1的记录数数为m,t2的记录数为n,那么该查询语句访问的记录次数为mn。当m=10000、n=10000时,那么mn=100000000(1亿)。这是比较夸张的浪费时间。如果m是100万,n是100万,那么mn就是1万亿次,读一万亿次记录,这是不能忍受的。 这里需要提到的一点是:我们不以读取记录的多少作为评价标准,在实际代价评估中,采用数据页(也可称为数据块,I/O的基本单位)。但是两者之间又是有联系的,假设每个页存放100个数据,那么t1的数据页为100页(10000/100),t2的数据页为100页,那么对于t1中的每一条记录,需要遍历t2的100页,加上该记录在t1中也属于一个数据页。因此,对于t1中的每一个记录,需要访问101个数据页。那么该查询的I/O量为:10000(100+1)=1010000页。如果考虑到数据页的缓冲,情况会更加复杂。代价评估是个很复杂的课题,可能需要单独写个系列来阐述数据库查询优化系统的代价评估模型。这里我们不考虑数据页缓冲,也就相当于假设数据库缓冲区的大小仅仅为1个页。 好了,继续前面的话题。 如果t1(c1)上建立有唯一索引iut1c1,那么可以将t2作为外表,对于t2的每一条记录,使用d1的值去命中索引iut1c1对应的B树。假设该B树的高度为3层,那么对于t2的每一条记录,需要访问t1表索引iut1c1中三个页(B树的高度),加上本身在t2中属于一个页。所以,在这种情况下,查询代价为:10000*(3+1)=40000页。 我们来对比一下,没有索引与有索引,两者之间的代价对比约等于25:1(比值1010000:40000)。也可以这么认为,假设没有索引的时候执行需要25s,那么有索引的情况下只需要1s。 这里我们把话题再延展下,如果m,n都为1000000,占用的块都为10000页(1000000/100)。没有索引的情况的I/O量为:1000000*(10000+1)=10001000000页。在t1(c1)有索引,该索引的高度对应的高度为4的情况下,假设I/O量为:100000*(4+1)=5000000。对比一下,没有索引与有索引,两者之间的代价比约等于2000:1。相等于,假设没有索引的情况下执行需要2000s,那么有索引的情况下只需要1s。 从上面的对比当中,我们可以发现索引的重要性,在实际应用当中,80%的查询性能问题来源于没有创建索引或者没有创建合适的索引

    0 0
相关问答

54

回答

阿里云已停止对MySQL5.1的版本维护,快快快升级版本吧

rds-pd 2014-11-12 16:21:57 62192浏览量 回答数 54

38

回答

干货分享:DBA专家门诊一期:索引与sql优化问题汇总

xiaofanqie 2014-12-25 15:13:38 92115浏览量 回答数 38

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 337095浏览量 回答数 8

36

回答

SQL Server优化案例分享【精品问答集锦】

管理贝贝 2016-08-25 10:14:03 45544浏览量 回答数 36

27

回答

阿里云开源软件镜像站点上线啦!!

qilu 2014-01-06 18:14:06 96139浏览量 回答数 27

11

回答

【精品问答合集】MongoDB热门问答

李博 bluemind 2019-05-29 16:50:19 121372浏览量 回答数 11

31

回答

【入门教程系列】Linux系统建站完整教程(适用于新手初级站长)

wujian8150 2011-09-26 16:53:51 49100浏览量 回答数 31

11

回答

速戳 | 20位阿里出题专家-备战阿里必不可少的题目

Runt 2020-04-15 10:54:04 57673浏览量 回答数 11

19

回答

云数据库RDS MySQL版【问答合集】

我是管理员 2018-08-03 15:10:37 48384浏览量 回答数 19

1

回答

阿里云各种产品使用索引(更新2015.08.17)

梦丫头 2015-07-18 12:19:16 71680浏览量 回答数 1
0
文章
1
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载