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

【DB笔试面试572】Oracle,模糊查询可以使用索引?

♣ 题目部分 Oracle,模糊查询可以使用索引?...♣ 答案部分 分为以下几种情况: (1)若SELECT子句只检索索引字段,那么模糊查询可以使用索引,例如,“SELECT ID FROM TB WHERE ID LIKE '%123%';”可以使用索引...(2)若SELECT子句不只检索索引字段还检索其它非索引字段,那么分为以下几种情况: ① 模糊查询形如“WHERE COL_NAME LIKE 'ABC%';”可以用到索引。...如果字符串ABC原字符串位置不固定,那么可以通过改写SQL进行优化。改写的方法主要是通过先使用子查询查询出需要的字段,然后在外层嵌套,这样就可以使用到索引了。...'AA%') filter(REVERSE(SUBSTR("TABLE_NAME",1,LENGTH("TABLE_NAME")-4)) LIKE 'AA%') --如果字符串ABC原字符串位置不固定

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

如何在Ubuntu上部署Elixir-Phoenix MySQL应用程序

部署之前,先测试数据库。 第一步 - 将Mariaex和Ecto添加到您的应用程序 通常,Phoenix应用程序不直接建立与数据库的连接并执行SQL查询。...无论何时需要与数据库交互并使用模块提供的功能,都可以导入此模块。 此存储库模块必须包含Ecto.Repo宏才能访问由Ecto定义的查询函数。...最后,指定Ecto存储库的应用程序配置,以便可以使用Mix任务,如ecto.create和ecto.migrate创建和管理数据库。 config/config.exs打开配置文件。...(如prod.exs和test.exs)必要覆盖config.exs的设置。...如果升级命令失败,edeliver将在错误发生输出它在服务器上执行的bash代码以及错误消息本身。您可以使用这些线索来解决您的问题。

6K20

浅谈优化Django ORM的性能问题

需要对表的每一行进行修改的迁移期间,使用iterator也非常方便。 不能因为迁移不是面向客户的就可以降低对效率的要求。 长时间运行的迁移可能意味着事务锁定或停机。...Django 使用 lazy loading(懒加载)的方式,只有用到了 author 对象时候才会加载。这样做有好处,但是会造成爆炸��式的查询。...Django ORM的关联查询非常好用,我们自然希望使用这种方式。一个循环中,如果不使用 select_related 或者 prefetch_related,可能会导致几百个查询。...Django只会知道查询,而不会多看一眼。这种情况只能依靠SQL的logs,还有函数调用来监控,然后确定是否进行查询。...Ecto,Elixir的数据库封装,一个没有获取数据的关系调用会返回 Ecto.Association.NotLoaded 提示,而不是默默的查询

1.7K30

Elixir, OTP, Ecto, 和 Phoenix 免费教程!

如果您只想看内容,您可以跳过,否则坚持下去,我们将看看为什么我们投入大量的时间Elixir生态系统。 ? 一些历史 四年前我开始使用ElixirSips,因为我几个项目中遇到并发和容错问题。...当然,详细的开发日志也可以让人们轻松地为Firestorm本身做出贡献。 如果没有为我们的Kickstarter做出贡献的每个人的支持,我们项目中花费的免费内容和时间是不可能的。...我们非常感激,并希望这个项目可以证明可以为世界建立高质量的开源软件,同时也生产高品质的教材。...Week 3: OTP 第三周,您将了解OTP。 这是存在的标准库的一部分,可以帮助您更好地模拟并发进程。 它还提供监督树,这是使用Elixir构建容错应用程序的构建块。...Week 4: Ecto 第四周,我们介绍了Ecto,它可以帮助您与数据库进行交互。 我们将开始为论坛建立一个数据模型,我们最终会得到一些非平凡的查询

1.8K60

GORM CRUD 10 分钟快速上手

一般服务启动创建数据表,如建立 DB 连接后只执行一次来完成数据表的创建。...其中 Save 方法保存记录,如果主键 ID 非空则执行更新操作,零值也会更新到 DB。如果主键 ID 为空,则执行插入操作。 增加多个 我们还可以使用 Create() 创建多项记录。..., price).Count(&c).Error return c, err } 查询记录是否存在 GORM 可以使用 Count 方法来判断一个查询是否返回了记录。...加载 加载实例 GORM 允许使用 Preload 通过多个 SQL 来直接加载关系。...加载,需要在模型的定义中体现这种关系,比如上面示例 User 定义中有一个订单的切片,加载指定切片名称。 条件加载 GORM 允许加载使用条件,其工作原理类似于内联条件。

48630

Buffer Pool缓存页不够,如何淘汰缓存?

执行CRUD都会将磁盘数据页加载到缓存页,那加载数据到缓存页,必然是要加载到空闲缓存页,所以必须要从free找个空闲缓存页,然后把磁盘数据页加载到该空闲缓存页 随着不断将磁盘数据页加载到空闲缓存页...最终耗尽free的空闲缓存页。这时,还要加载数据页到一个空闲缓存页,MySQL 该何去何从?...缓存命中率 现有两个缓存页: 一个缓存页的数据,经常被修改和查询,都可以操作缓存,不需要从磁盘加载数据,这那缓存命中率就很高。这种高级员工就是啥脏活累活,都会接受。...读 当你从磁盘加载一个数据页,他可 能会连带着把该数据页相邻的其他数据页,也加载到缓存。...你刚加载了一个数据页到那个缓存页,他冷区的链表头部,然后立马(1ms以内)就又被访问了,但之后就再也不访问了呢?难道这种情况也要把这缓存页放到热区头部

34740

提高Djang查询速度的9种方法

目录索引的优化查询集的延迟加载使用select_related进行关联查询使用prefetch_related进行取延迟计算字段使用values()和values_list()方法选择需要的字段使用annotate...查询集的延迟加载Django查询集是惰性加载的,只有需要数据才会执行数据库查询。这意味着我们可以链式调用多个方法来对查询进行逐步优化,而不必立即执行查询。...使用select_related进行关联查询涉及到关联表的查询,使用select_related()方法可以减少数据库查询的次数。...使用prefetch_related进行进行跨关联的查询,使用prefetch_related()方法可以有效地减少数据库查询次数。...我们可以通过以下方式进行查询:books = Book.objects.prefetch\_related('categories')这样,当我们访问book.categories属性,不会再次执行数据库查询

26920

MySQL 简单查询语句执行过程分析(三)从存储引擎读数据

中有两种索引:主键索引(也叫聚簇索引)、二级索引,执行过程中使用哪种类型的索引,使用哪个索引,是查询优化阶段决定的。...举例说明: 假设 test 表的字段 a 上有个二级索引 idx_a,当执行以下 SQL 使用 idx_a 索引进行查询,就需要回表 select * from test where a > 1024...3 个字段?...3.2 从 Buffer Pool 读记录 InnoDB 读取记录,都是从 Buffer Pool 读的,如果数据页不在 Buffer Pool ,会先把数据页从磁盘上加载到 Buffer Pool...可重复读隔离级别下,一个事务多次执行同一条查询语句,得到的结果应该是完全一样的(不考虑幻读的话)。那么可重复读是通过什么东西实现的呢?答案就是:一致性视图。

1.2K20

跟我一起学Laravel-EloquentORM进阶部分

关联关系查询 Eloquent,所有的关系都是使用函数定义的,可以执行关联查询的情况下获取关联的实例。...,它们只有在被访问的时候才会去查询数据库,与之对应的是加载加载可以使用关联查询出所有数据,减少执行sql的数量。...访问Eloquent模型的时候,默认情况下所有的关联关系都是延迟加载的,使用的时候才会开始加载,这就造成了需要执行大量的sql的问题,使用加载功能可以使用关联查询出所有结果 <?...,然后遍历的时候再执行N个查询查询出作者信息,显然这样做是非常低效的,幸好我们还有加载功能,可以将这N+1个查询减少到2个查询查询的时候,可以使用with方法指定哪个关系需要加载。...当查询需要对使用中间表作为查询条件可以使用wherePivot, wherePivotIn,orWherePivot,orWherePivotIn添加查询条件。

4K50

这会是ClickHouse解决数据一致性的新法宝?

还有一种是通过 FINAL 查询实现,即在查询语句后增加 FINAL 修饰符,这样查询的过程中将会执行 Merge 的特殊逻辑(例如数据去重,聚合等)。...但是最新的 MaterializeMySQL ,消费同步 binlog 的表使用了 ReplacingMergeTree,而它实现数据去重的方法就是使用了 FINAL 查询,难道不怕慢?...原来 v20.5.2.7-stable 版本,FINAL 查询进行了优化,现在已经支持多线程执行了,并且可以通过 max_final_threads 参数控制单个查询的线程数。...返回时间很快, CH 新版本已经实现了 EXPLAIN 查询,所以查看这条 SQL 的执行计划就很方便了: explain pipeline select * from hits_100m_obfuscated...在这里例子可以看到,这张表有6个分区被依次加载了。

8.1K40

Laravel源码分析之模型关联

使用模型关联加载后,效率上高于开发者自己写join和子查询,模型关联底层是通过分别查询主体和关联数据再将它们关联匹配到一起。...getResults也是每个Relation子类需要实现的方法,这样每种关联都可以根据自己情况去执行查询获取关联模型,现在这个例子用的是一对多关联, hasMany类我们可以看到这个方法的定义如下:...意味着在你第一次访问该属性,才会加载关联数据。不过当查询父模型,Eloquent 可以加载」关联数据。加载避免了 N + 1 查询问题。...books = App\Book::all(); foreach ($books as $book) { echo $book->author->name; } 上面这样使用关联在访问每本书的作者都会执行查询加载关联数据...Model 的 get方法获取模型时会加载的关联模型,获取关联模型给关系应用约束的 addEagerConstraints方法是具体的关联类定义的,我们可以看下HasMany类的这个方法。

9.5K10

CMU 15-445 数据库课程第五课文字版 - 缓冲池

磁盘文件上面有我们的缓冲池(Buffer Pool),它为执行引擎(Execution Engine)服务 例如:我们有一个执行引擎发出一个请求访问第二页,缓冲池中没有第二页,缓冲池要做的是,首先将文件目录加载到内存...页表在内存,它是临时的。我们不需要持久化这个页表,页表可以我们执行查询逐步建立。 一个问题:在内存设置了页表某一帧的 dirty 位后,如果掉电,我们会丢失对页面的更新?...一般有两种策略: 全局策略(Global Policies):根据系统同一间并发运行的所有查询进行综合考虑 本地策略(Local Policies):基于每个查询加载和移除页,但是也会有页的共享...假设我们有一个查询 Q1 执行顺序查询扫描所有页,DBMS 可以执行一些数据取,比如在开始扫描第 0 页的时候,就把第 0,1,2 页都加载到缓冲池中。...学术界有很多关于取的研究,商业系统,是一个很大的卖点,更好的取应该是可以计算出你知道用这种方式取需要付出多少资源,如果你花费太多资源做取,那么你就会阻碍系统进行的实际工作;而如果你什么都不做

43720

面试必问的 MySQL,你懂了吗?

接下来进入正题,以 RR 级别为例:每开启一个事务,系统会给该事务会分配一个事务 Id,该事务执行第一个 select 语句的时候,会生成一个当前时间点的事务快照 ReadView,主要包含以下几个属性...所以 InnoDB B+树高度一般为3层,就能满足千万级的数据存储。查找数据一次页的查找代表一次IO,所以通过主键索引查询通常只需要1-3次 IO 操作即可查找到数据。...线性读(Linear read-ahead):线性读方式有一个很重要的变量 innodb_read_ahead_threshold,可以控制 Innodb 执行读操作的触发阈值。...一并读到 buffer pool,由于随机读方式给 Innodb code 带来了一些不必要的复杂性,同时性能也存在不稳定性,5.5已经将这种读方式废弃。...如果表绝大多数都只是读查询可以考虑 MyISAM。 二狗:explain 用过,有哪些字段分别是啥意思?

51220

记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题

不到1秒就执行完了。执行计划一对,果然走的是时间索引: ? 后来回味了一下,记起之前看到的查询引擎优化原理,如果你的条件带有运算符或者使用函数等,则查询引擎会放弃优化,而执行表扫描。...ROW_NUMBER()分页页数较大的问题 事情到这里,还没完。后面同事又跟我反应,查询到后面的页数,又卡了!what?...强制使用hash join 经网友提示,大的页数可以强制使用hash join来减少IO,而且经过尝试,可以通过建立两个子查询来避免使用临时表。...很明显,预估的时候只需对刷选的结果排序,但是实际执行是对前面所有的页数进行了排序,最终排序占了大部分的开销。那么,这种情况能破?请留下您的回复!...,可以控制查询引擎部分的优化过程 ROW_NUMBER分页大页数存在性能问题,可以通过一些小技巧进行规避 尽量通过cte利用索引 把不参与where条件的表放到分页的cte外面 如果参与where条件的表过多

1.7K120

第04章_逻辑架构

# 2.3 MySQL5.7 SQL 执行原理 上述操作 MySQL5.7 测试,发现前后两次相同的 sql 语句,执行查询过程仍然是相同的。不是会使用 缓存?...执行编号 2 ,比执行编号 1 少了很多信息,从截图中可以看出查询语句直接从缓存 获取数据。...# 3.1 缓冲池 vs 查询缓存 缓冲池和查询缓存是一个东西?不是。 # 1) 缓冲池(Buffer Pool) 首先我们需要了解 InnoDB 存储引擎,缓冲池都包括了哪些。...缓冲池的读特性: 缓冲池的作用就是提升 I/O 效率,而我们进行读取数据的时候存在一个 “局部性原理”,也就是说我们使用了一些数据,大概率还会使用它周围的一些数据,因此采用 “读” 的机制提前加载,...缓存在数据库的结构和作用如下图所示: 如果我们执行 SQL 语句的时候更新了缓存池中的数据,那么这些数据会马上同步到磁盘上

22120

MySQL查询重写插件

MySQL查询重写插件 查询重写插件 从MySQL 5.7.6开始,MySQL Server支持查询重写插件,可以服务器执行之前检查并可能修改服务器接收的语句。...以下是官方文档介绍: 解析重写插件具有以下特点: 1.该插件允许服务器处理之前重写到达服务器的SQL语句。 2.该插件接收一个语句字符串,并可能返回一个不同的字符串。...加载操作(通过调用flush_rewrite_rules() 存储过程执行)Rewriter仅在此列加载才将表的规则加载到 内存缓存YES。...此列可以不删除规则的情况下停用规则:将列设置为除YES表之外的值 ,然后将表重新加载到插件。 message: 该插件使用此列与用户进行通信。...Rewriter_reload_error:是否最近将rewrite_rules表加载到Rewriter 插件使用的内存高速缓存发生错误 。如果值为OFF,则不会发生错误。

2.5K30

mysql总结

,没有同步的数据2.什么是读取 inno db(数据页-默认16k)【参数-innerdb-page-size】 当你的磁盘数据到内存(会有一个读取的概念) 当你操作磁盘数据的时候比如16k,他会把附近的数据也会加载到内存...因为通过读机制还有全表扫描加载进来的数据页通常是1s内就加载了很多,然后对他们访问一下,这些操作都会在1s内完成,如果大于1s,就是慢sql,他们会将存放在冷数据区域等待刷盘清空,基本上不太会有机会放入到热数据的区域...AGE FROM TABLE)18- 事物的修改即使没有提交,其他的事物也能看见,事物可以读取到未提交的数据不可重复读- A (SELECT AGE FROM TABLE)16 -> B (UPDATE...如果执行过程,服务器突然挂掉,也就是说,执行了部分sql,不确定提没提交,那么这个时候,重启MySQL ,MySQL 会检查 undo.log,如果最近的检查点后面有内容,则说明有部分sql执行了,...4、悲观锁悲观锁是无论什么情况都先加锁,语句后边加 for update,select 语句后边加了for update相当于加了锁,加了锁以后,其他事务就不能对它修改,需要等待当前事务修改完之后才可以修改

42230

常见的Mybatis面试题详细讲解大全

10、Mybatis是否支持延迟加载?如果支持,它的实现原理是什么? 11、Mybatis的Xml映射文件,不同的Xml映射文件,id是否可以重复? 12、Mybatis如何执行批处理?...9、Mybatis能执行一对一、一对多的关联查询?都有哪些实现方式,以及它们之间的区别。...答:能,Mybatis不仅可以执行一对一、一对多的关联查询,还可以执行多对一,多对多的关联查询,多对一查询,其实就是一对一查询,只需要把selectOne()修改为selectList()即可;多对多查询...Mybatis配置文件可以配置是否启用延迟加载lazyLoadingEnabled=true|false。...而Mybatis查询关联对象或关联集合对象,需要手动编写sql来完成,所以,称之为半自动ORM映射工具。

1.9K51
领券