首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

79-不要看到有order by xxx desc创建desc降序索引-文末有赠书福利

desc); 加hint强制使用idx_t1_desc 索引,看一下什么情况: 使用的是index full scan , 也要把索引遍历一遍(如果object_id is null的记录数超过20...SQL,不用加hint,自动使用新建索引, 执行计划使用了index range scan,效率大幅提高,buffer gets只有5: 可能有人会说, 上面的desc索引,可能是为下面的SQL...因为oracle的优化器对这样一个全是desc的order by, 可以使用普通索引的降序扫描(descending)的方式进行优化,完全不需要创建desc降序索引: 如果上面的order by...为了避免多余的索引和bug, 不建议创建全是desc 降序索引....概括起来就是: 如果order by的一个或多个字段都是desc降序,那么是不需要创建desc 降序索引的; 如果order by的多个字段有升有降,这种情况才需要创建desc降序索引.

53210
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL 如何创建索引及优化

,或者是使用了 最左前缀 规则索引的查询。...mysql 在查询时具体使用了哪些索引,由 key 字段决定。 6.key 此字段是 mysql 在当前查询时所真正使用到的索引。...: 7.key_len 表示查询优化器使用索引的字节数,这个字段可以评估组合索引是否完全被使用。...*,o.* from user_info u LEFT JOIN  order_info o on u.id=o.user_id; 执行结果,type有ALL,并且没有索引: 开始优化,在关联列上创建索引...六、是否需要创建索引索引虽然能非常高效的提高查询速度,同时却会降低更新表的速度。实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也是要占用空间的。

3.1K20

MySQL 如何创建索引?怎么优化?

,或者是使用了 最左前缀 规则索引的查询。...mysql 在查询时具体使用了哪些索引,由 key 字段决定。 6.key 此字段是 mysql 在当前查询时所真正使用到的索引。...建立复合索引后再查询: ? 7.key_len 表示查询优化器使用索引的字节数,这个字段可以评估组合索引是否完全被使用。...开始优化,在关联列上创建索引,明显看到type列的ALL变成ref,并且用到了索引,rows也从扫描9行变成了1行: ? 这里面一般有个规律是:左链接索引加在右表上面,右链接索引加在左表上面。...六、是否需要创建索引索引虽然能非常高效的提高查询速度,同时却会降低更新表的速度。实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也是要占用空间的。 ?

3.8K120

如何使用 sqlalchemy declarative base 多层次继承

SQLAlchemy中,通过declarative_base创建的基类可以通过多层次的继承建立继承关系。这允许你在数据库中创建具有继承结构的表。...在我使用某数据库做中转的时候,经常会遇到各种各样的问题,例如下面的问题,通过记录并附上完美的解决方案,以便为查询更加方便。...问题背景在使用 sqlalchemy declarative base 建立模型时,我有许多具有相同列的表。不同的只是表名。我想设置一个继承链来最小化代码重复。...相反,我想这样做,但在尝试实际使用它时出现 sqlalchemy.exc.InvalidRequestError 错误:from sqlalchemy import Column, Integer, Textfrom...primary_key=True)​Base = declarative_base(cls=Hgm)​class TransMap_HgmIntronVector(Base): pass请注意,使用混合类来代替具有相同列可能更简单

15510

这条SQL的索引,你会如何创建

在微信群中,老虎刘老师提了一个有趣的问题,这个SQL,object_id列的可选择性非常高,owner列的可选择性比较差,你认为创建什么索引最佳?...select max(object_id) from t where owner='SYS'; 但从这条SQL看,一共就用了两个字段,object_id和owner,如果使用穷举法,排列组合,能创建的B...,因为检索条件中owner是索引的前导列,所以能使用索引范围扫描,consistent gets是40,但是不如object_id单键值索引,和object_id作为前导列的复合索引, SQL>...此外,object_id单键值索引和object_id作为前导列的复合索引,对这两种索引的选择,还取决于业务的需求,如果有同时用object_id和owner这两个字段做检索条件的,可以选择使用复合索引...,如果没这种需求,就可以创建object_id单键值索引,这样一来,使用object_id和其他字段的复合检索,都可能用上object_id的单键值索引,一举多得。

1.1K30

如何使用Phoenix在CDH的HBase中创建二级索引

Fayson在前面的文章《Cloudera Labs中的Phoenix》和《如何在CDH中使用Phoenix》中介绍了Cloudera Labs中的Phoenix,以及如何在CDH5.11.2中安装和使用...本文Fayson主要介绍如何在CDH中使用Phoenix在HBase上建立二级索引。...举个例子,下面是创建索引的语句: create index my_index on hbase_test (s6); (可左右滑动) 而查询语句是 select s2 from hbase_test where...1.创建索引使用覆盖索引 CREATE INDEX index1_hbase_test ON hbase_test(s6) INCLUDE(s2) (可左右滑动) 这种索引会把s2加到索引表里面,同时...3.创建本地索引 create local index index2_hbase_test on hbase_test (s7); (可左右滑动) 本地索引和全局索引不同的是,查询语句中,即使所有的列都不在索引定义中

7.4K30

Mysql8中降序索引的底层实现

我们通常使用下面的语句来创建一个索引: create index idx_t1_bcd on t1(b,c,d); 上面sql的意思是在t1表中,针对b,c,d三个字段创建一个联合索引。...但是大家不知道的是,上面这个sql实际上和下面的这个sql是等价的: create index idx_t1_bcd on t1(b asc,c asc,d asc); asc表示的是升序,使用这种语法创建出来的索引叫做升序索引...也就是我们平时在创建索引的时候,创建的都是升序索引。 可能你会想到,在创建索引的时候,可以针对字段设置asc,那是不是也可以设置desc呢?...asc,c desc,d desc); create index idx_t1_bcd on t1(b asc,c asc,d desc); 这种语法在mysql中也是支持的,使用这种语法创建出来的索引就叫降序索引...(b desc,c desc,d desc); 创建成功后,我们使用以下sql查看一下索引信息: show index from t1; Mysql7中你将得到结果: ?

1.3K30

mysql如何使用前缀索引_MySQL的前缀索引你是如何使用

但前缀索引也有它的缺点,不能在 order by 或者 group by 中触发前缀索引,也不能把它们用于覆盖索引。 什么情况下适合使用前缀索引?...当字符串本身可能比较长,而且前几个字符就开始不相同,适合使用前缀索引;相反情况下不适合使用前缀索引,比如,整个字段的长度为 20,索引选择性为 0.9,而我们对前 10 个字符建立前缀索引其选择性也只有...0.5,那么我们需要继续加大前缀字符的长度,但是这个时候前缀索引的优势已经不明显,就没有创建前缀索引的必要了。...WHERE x_name = ‘1892008.205824857823401.800099203178258.8904820949682635656.62526521254’; 查询时间:3.291s 当使用第一位字符创建前缀索引后...貌似查询的时间更长了 因为只第一位字符而言索引值的重读性太大了 200万条数据全以数字开头那么平均20万条的数据都是相同的索引值 重新建立前缀索引 这次以前4位字符来创建 alter table x_test

2.5K20
领券