写在前面网上看帖子的时候,经常会看到说尽量exists,少用in。那么问题来了,是所有场景下都尽量exists吗,还是具体场景具体分析。给你答案mysql做子查询的时候,永远记得要小表驱动大表。inselect * from A where id in (select id from B);相当于先循环B,再循环A。B表驱动A表。也就是当B表数据少于A表时,in最佳。existsselect * from A whereexists(select 1 ...
原创 2021-12-29 16:09:09
324阅读
in后面跟的是小表,exists后面跟的是大表。 简记:in小,exists大。 对于exists select .....from table where exists(subquery); 可以理解为:将主查询的数据放入子查询中做条件验证,根据验证结果(true或false)来决定主查询的数据是否得以保留。
转载 2024-04-03 15:45:00
0阅读
路漫漫其修远兮,吾将上线而求索。《深入浅出MySql》学习笔记-选择合适的数据类型一、CHAR与VARCHARCHAR:固定长度,处理速度相对较快,但是会删除数据尾部的空格。适用于对长度变化不大并且对查询速度有较高要求的数据。VARCHAR:可变长度。注:MyISAM:建议使用固定长度的数据列代替可变长度的数据列。MEMORY:目前都是都是使用固定长度的数据行存储,因此无论使用CHAR或者VARC
按照五点把书中的内容进行一下整理:1、为什么要选择Redis:介绍Redis的使用场景与使用Redis的原因;2、Redis常用命令总结:包括时间复杂度总结与具体数据类型在Redis内部使用的数据结构;3、Redis的高级功能:包括持久化、复制、哨兵、集群介绍;4、理解Redis:理解内存、阻塞,这部分是非常重要的,前面介绍的都可以成为术,这里应该属于道的部分;5、开发技巧:主要是一些开发实战的总
转载 2023-08-08 21:24:01
306阅读
      不同的引擎对于索引有不同的支持:Innodb和MyISAM默认的索引是Btree索引;而Mermory默认的索引是Hash索引。我们在mysql中常用两种索引算法BTree和Hash,两种算法检索方式不一样,对查询的作用也不一样。 区别:哈希索引适合等值查询,但是无法进行范围查询 哈希索引没办法利用索引完成排序 哈希索引不支持多列联合索引
1、较频繁地作为查询条件的字段这个都知道。什么是教频繁呢?分析你执行的所有SQL语句。最好将他们一个个都列出来。然后分析,发现其中有些字段在大部分的SQL语句查询时候都会用到,那么就果断为他建立索引。2、唯一性太差的字段不适合建立索引什么是唯一性太差的字段。如状态字段、类型字段。那些只存储固定几个值的字段,例如用户登录状态、消息的status等。这个涉及到了索引扫描的特性。例如:通过索引查找键值为
在服务器的硬件或软件发生问题时,可以不用管数据库发生了什么,不需要执行任何操作就可以直接重启。InnoDb的crash recovery机制会自动的完成在发生故障前的数据变更提交,不会恢复任何已经发生改变但是没有提交的数据。InnoDB有它自己的buffer pool去缓存表和索引数据在主存中便于访问。频繁被访问的数据会从内存中直接获取到。缓存可以被用于很多类型的信息并且能提高处理速度。在专门用于
一,什么情况下使用索引1. 表的主关键字自动建立唯一索引2. 表的字段唯一约束ORACLE利用索引来保证数据的完整性3. 直接条件查询的字段在SQL中用于条件约束的字段如zl_yhjbqk(用户基本情况)中的qc_bh(区册编号)select * from zl_yhjbqk where qc_bh=’7001’;4. 查询中与其它表关联的字段字段常常建立了外键关系如zl_ydcf(用电成份)中的
GC的基础知识1.什么是垃圾C语言申请内存:malloc freeC++: new deletec/C++ 手动回收内存Java: new ?自动内存回收,编程上简单,系统不容易出错,手动释放内存,容易出两种类型的问题:忘记回收多次回收没有任何引用指向的一个对象或者多个对象(循环引用)2.如何定位垃圾引用计数(ReferenceCount)根可达算法(RootSearching)3.常见的垃圾回收
转载 2024-08-28 16:33:56
84阅读
子查询一般用于跨表查询,习惯上,外层的查询称为父查询,圆括号中嵌入的查询称为子查询。SQL语句执行时先执行子查询部分,求出子查询部分的值,再执行整个父查询,返回最后的结果。
转载 2023-06-19 15:26:55
319阅读
# 什么时候使用 MySQL? 作为一名初入开发行业的小白,你可能会好奇如何在项目中合理使用 MySQL 数据库。MySQL 是一种流行的关系型数据库管理系统(RDBMS),适用于多种应用场景。在这篇文章中,我将引导你了解何时使用 MySQL 并介绍如何在实际项目中实现,从而帮助你打下扎实的基础。 ## MySQL 使用流程概述 在决定使用 MySQL 数据库之前,你需要经历以下几个步骤:
原创 7月前
26阅读
索引为什么能提高数据访问性能?  很多人只知道索引能够提高数据库的性能,但并不是特别了解其原理,其实我们可以一个生活中的示例来理解。  我们让一位不太懂计算机的朋友去图书馆确认一本叫做《MySQL性能调优与架构设计》的书是否在藏,这样对他说:“请帮我借一本计算机类的数据库书籍,是属于 MySQL 数据库范畴的,叫做《MySQL性能调优与架构设计》”。朋友会根据所属类别,前往存放“计算机”书籍区域
大纲 cs3k.com数据结构概述哈希表 Hash: a.原理  b.应用堆 Heap: a.原理    b.应用-优先队列 Priority Queue  c.替代品-TreeMap 数据结构的两类问题cs3k.com1.设计一个数据结构2.实现某个算法用到了某个/某几个数据结构什么是数据结构可以认为是一个集合,并且提供集合上的若干操作
转载 2024-08-12 16:31:15
42阅读
原文(问答):https://stackoverflow.com/questions/4984600/when-do-i-use-a-dot-arrow-or-double-colon-to-refer-to-members-of-a-class-in-cC++提供了三种访问类或者类对象的操作符,他们是“双冒号::”,“点.”,"箭头->", 这三种操作符有着各自的使用场景和定义。...
原创 2021-06-04 10:49:53
1769阅读
一 序  本文属于极客时间MySQL45讲读书笔记系列。本篇接着上篇老师接着介绍MySQL内部临时表的使用。今天这篇文章,我就先给你举两个需要用到内部临时表的例子,来看看内部临时表是怎么工作的。然后,我们再来分析,什么情况下会使用内部临时表。union 执行流程为了便于量化分析,我下面的表t1来举例。create table t1(id int primary key, a int,
转载 2023-12-07 12:41:26
56阅读
Numpy是python中最有用的工具之一。它可以有效地处理大容量数据。使用NumPy的最大原因之一是它有很多处理数组的函数。可以用作数据统计、图像处理、线性代数、傅里叶变换等。对于运算的数据首先表示为numpy数组的形式(向量化)首先导入numpy这个库 然后使用np.array()创建一个数组 也可以使用np.zeros()创建一个全零的数组 在
37 什么时候使用内部临时表前面介绍了sort buffer,内存临时表和join buffer,这3个数据结构都是用来存放语句执行过程中的中间数据,以辅助sql语句的执行的,在排序的时候sort buffer,在使用join语句的时候使用了join_buffer。在mysql里,什么时候使用内部临时表呢?Union执行流程 create table t37(id int primary ke
      MySQL的历史最早可以追溯到1979年,那时Oracle也才小打小闹,微软的SQL Server影子都没有。Monty Widenius在其合伙的TcX小公司工作时,BASIC设计了一个报表工具,可以在4M主频和16KB内在的计算机上运行。随着时间的推移,这个小工具被C重写并迁移到Unix上运行。当时,它只是一个很底层的面向报表的
转载 2023-06-25 23:47:59
97阅读
SQL语法SQL:Structed Query Language 结构化查询语句注意:在数据库操作中,所有的命令和关键字以及自定义名称都不区分大小写,但是一般我们:关键字部分使用全部大写,自定义名称(数据库名、数据库表名、字段名)小写字母开头;字符串使用单引号或者双引号,一般使用单引号,方便在java/PHP/HTML程序和代码字符串类型的参数进行嵌套;所有的符号都必须是英文状态的符号,数据库高
转载 7月前
28阅读
1.JAVA中的关键字:Java 关键字是区分大小写的哦!所以 void 是关键字,但 Void 就不是了~~2.JAVA标识符:标识符就是用于给 Java 程序中变量、类、方法等命名的符号。使用标识符时,需要遵守几条规则: 1.  标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符,不能以数字开头。譬如:123name 就
转载 8月前
16阅读
  • 1
  • 2
  • 3
  • 4
  • 5