SIMPLE 简单的select查询,查询中不包含子查询或者UNION PRIMARY 查询中若包含任何复杂的子部分,最外层查询则被标记为PRIMARY SUBQUERY 在SELECT或WHERE列表中包含了子查询...因为只匹配一行数据,所以很快。如将主键置于where列表中,MySQL就能将该查询转换为一个常量。 eq_ref 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。...常见于主键或唯一索引扫描 ref 非唯一性索引扫描,返回匹配某个单独值的所有行,本质上也是一种索引访问,它返回所有匹配某个单独值的行,然而,它可能会找到多个符合条件的行,所以他应该属于查找和扫描的混合体...中包含(str)的结果,返回结果为null或记录 假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。...如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,')时将无法正常运行。 5.
如果最左边的列没有被包含在查询条件中,则MySQL将不会使用该复合索引 例如:有一个复合索引包含3个字段(A、B、C) 如果只包含了A列,则索引可能被使用 如果包含了A、B列,则索引可以较为高效的使用。...UNION操作符用于合并两个或多个SELECT语句的结果集,并且会默认去除重复的行,只返回唯一的行。...如果你需要一个不包含任何重复行的结果集,并且不介意MySQL为你去除这些重复行,那么使用UNION。 如果你需要包含所有行,包括重复行,并且希望操作更快地执行,那么使用UNION ALL。...6、SELECT SELECT 子句指定要包含在结果集中的列或表达式。您可以在此处定义查询的输出,包括任何计算、表达式和别名。该子句确定将从查询中返回哪些数据。...还可以根据需要指定升序或降序排序来组织数据。 9、LIMIT 或 TOP LIMIT(MySQL)或 TOP(SQL Server)子句限制了查询返回的行数,并选择性地跳过指定的行数。
TEXT是一个不区分大小写的BLOB。四种TEXT类型 TINYTEXT TEXT MEDIUMTEXT和 LONGTEXT 它们对应于四种BLOB类型,并具有相同的最大长度和存储要求。...以下是mysql_fetch_array和mysql_fetch_object的区别: mysql_fetch_array() - 将结果行作为关联数组或来自数据库的常规数组返回。...mysql_fetch_object - 从数据库返回结果行作为对象。 30、我们如何在mysql中运行批处理模式?...CURRDATE(), CURRTIME()- 返回当前日期或时间。 NOW() - 将当前日期和时间作为一个值返回。...如果scale是0,DECIMAL和NUMERIC值不包含小数点或小数部分。
在MySQL中,可以通过EXPLAIN命令获取MySQL如何执行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和连接的顺序。...key_len只计算where条件用到的索引长度,而排序和分组就算用到了索引,也不会计算到key_len中。...这个字段表示存储引擎返回的数据在server层过滤后,剩下多少满足查询的记录数量的比例,这个值是百分比,不是具体记录数。 Extra 执行情况的说明和描述,显示信息种类非常多,下面只列举常见的结果。...using_union:表示使用or连接各个使用索引的条件时,该信息表示从处理结果获取并集 using intersect:表示使用and的各个索引的条件时,该信息表示是从处理结果获取交集 using...获得后,再和cm_log的379条记录根据规则关联。从执行过程上可以看出返回了太多的数据,返回的数据绝大部分cm_log都用不到,因为cm_log只锁定了379条记录。 3.优化分析 如何优化呢?
幻读 : 是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。 同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。...注意的是,当count()语句包含where条件时MyISAM也需要扫描整个表。 7)对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立联合索引。...“非聚簇索引”:索引文件和数据文件分开存放,索引文件的叶子页只保存了主键值,要定位记录还要去查找相应的数据块。 10、select for update 是什么含义,会锁表还是锁行或是其他。...16、mysql中in 和exists 区别。 mysql 中的 in 语句是把外表和内表作 hash 连接,而 exists 语句是对外表作 loop 循环,每次 loop 循环再对内表进行查询。...EXISTS 只返回 TRUE 或 FALSE,不会返回 UNKNOWN IN 当遇到包含NULL的情况,那么就会返回 UNKNOWN 17、数据库自增主键可能的问题。
CHAR和VARCHGAR不同之处在于MySQL数据库处理范围指示器的方式:CHAR把范围大小视为值的大小,在长度不足的情况下就用空格补足;而VARCHAR类型把范围指示器视为最大值并且只使用存储字符串实际需要的长度...BLOB类型区分大小写,而TEXT 不区分大小写。大小修饰符不用于各种BLOB和TEXT子类型。比指定类型支持的最大范围大的值将被自动截短。...3、日期和时间类型 在处理日期和时间类型的值时,MySQL带有5个不同的数据类型可供选择。分为简单日期、时间类型,混合日期、时间类型。...MySQL认为ENUM类型集合中出现的值是合法输入,除此之外其它任何输入都将失败。通过搜索包含空字符串或对应数字索引为0的行就可以很容易地找到错误记录的位置。...在SET元素中值被存储为一个分离的“位”序列,SET类型中不可能包含两个相同的元素。 从SET类型字段中找出非法的记录只需查找包含空字符串或二进制值为0的行。
MySQL 中有哪几种锁?全局锁、行级锁、自增锁、记录锁、外键锁、间隙锁、表级锁、元数据锁、意向锁、临键锁MySQL 中有哪些不同的表格?...当插入一行数据但未设置该列的值,则自动设置当前时间(默认是UTC时间)作为该列的值。当更新一行数据但未设置该列的值,则自动更新该列的值为当前时间。...CURRENT_DATE()返回当前的日期返回的是DATE类型的值,格式通常是YYYY-MM-DD。MySQL有哪些常见存储引擎?...工作原理:记录旧版本数据、回滚操作、MVCC支持。存储与管理:Undo Log存在撤销日志段中,包含在回滚段中。对正规表和临时表执行插入、更新、删除操作的事务需要完整分配撤销日志。...游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字。用户可以通过游标逐一获取记录并赋给主变量,交由主语言进一步处理。什么是存储过程?有哪些优缺点?
SELECT VERSION();用于获取当前Mysql的版本。 14、Mysql中使用什么存储引擎? 存储引擎称为表类型,数据使用各种技术存储在文件中。...TEXT是一个不区分大小写的BLOB。四种TEXT类型 TINYTEXT TEXT MEDIUMTEXT和 LONGTEXT 它们对应于四种BLOB类型,并具有相同的最大长度和存储要求。...以下是mysql_fetch_array和mysql_fetch_object的区别: mysql_fetch_array() - 将结果行作为关联数组或来自数据库的常规数组返回。...mysql_fetch_object - 从数据库返回结果行作为对象。 36、我们如何在mysql中运行批处理模式?...如果scale是0,DECIMAL和NUMERIC值不包含小数点或小数部分。
InnoDB 的行锁是基于索引实现的,而不是物理行记录上。即访问如果没有命中索引,则也无法使用行锁,将要退化为表锁。...Record lock:单个行记录上的锁 Gap lock:间隙锁,锁定一个范围,不包括记录本身 Next-key lock:record + gap 锁定一个范围,包含记录本身 ref 锁机制与InnoDB...1) 内连接(自然连接):只返回匹配的行,如 Inner Join、Union Join。 2)外连接:返回一个表的全集,如 Left、Right、Full 和 Cross。...where 子句的作用是在对查询结果进行分组前,将不符合条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。...in 适合内表比外表数据小的情况,exists 适合内表比外表数据大的情况。如果查询的内外表大小相当,则二者效率差别不大。
约束唯一标识数据库表中的每条记录。...DATEADD() 在日期中添加或减去指定的时间间隔 DATEDIFF() 返回两个日期之间的时间 CONVERT() 用不同的格式显示日期/时间 4.2 Date 数据类型 MySQL 使用下列数据类型在数据库中存储日期或日期...而VARCHAR类型把它视为最大值并且只使用存储字符串实际需要的长度(增加一个额外字节来存储字符串本身的长度)来存储值。所以短于指示器长度。...MySQL 认为 ENUM 类型集合中出现的值是合法输入,除此之外其它任何输入都将失败。这说明通过搜索包含空字符串或对应数字索引为 0 的行就可以很容易地找到错误记录的位置。...并且它还去除了重复的元素,所以 SET 类型中不可能包含两个相同的元素。 希望从 SET 类型字段中找出非法的记录只需查找包含空字符串或二进制值为 0 的行。
简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。 每一列只有一个值 ; 每一行都能区分; 每一个表都不包含其他表已经包含的非主关键字信息。...MySQL中的in语句是把外表和内表作hash 连接,而exists语句是对外表作loop循环,每次loop循环再对内表进行查询。...如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。...SELECT * FROM table LIMIT 95,-1; 如果只给定一个参数,它表示返回最大的记录行数目: -- 检索前 5 个记录行 SELECT * FROM table LIMIT 5...解决办法: 使用explain进行分析,如果发现查询需要扫描大量的数据,但只返回少数的行,可以通过如下技巧去优化: 使用索引覆盖扫描,把所有的列都放到索引中,这样存储引擎不需要回表获取对应行就可以返回结果
SELECT VERSION();用于获取当前MySQL的版本。 14、MySQL中使用什么存储引擎? 存储引擎称为表类型,数据使用各种技术存储在文件中。 ...以下是mysql_fetch_array和mysql_fetch_object的区别: mysql_fetch_array() - 将结果行作为关联数组或来自数据库的常规数组返回。 ...mysql_fetch_object - 从数据库返回结果行作为对象。 36、我们如何在mysql中运行批处理模式? ...·CURRDATE(), CURRTIME()- 返回当前日期或时间。 ·NOW() - 将当前日期和时间作为一个值返回。...如果scale是0,DECIMAL和NUMERIC值不包含小数点或小数部分。
该节描述了这些类型如何工作以及如何在查询中使用这些类型。...BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。...表中只有单列字段情况下,varchar一般最多能存放(65535 - 3)个字节,varchar的最大有效长度通过最大行数据长度和使用的字符集来确定,通常的最大长度是65532个字符(当字符串中的字符都只占...如varchar(20),指的是20字符。 当然,行总长度还是65535字节,而字符和字节的换算,则与编码方式有关,不同的字符所占的字节是不同的。...举例:我向数据类型为:varchar(1000)的列插入了1024行数据,但是每个只存一个字符,那么这1024行真实数据量其实只有1K,但是我却需要约1M的内存去适应他。
创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。 实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。...eq_ref:出现在要连接过个表的查询计划中,驱动表只返回一行数据,且这行数据是第二个表的主键或者唯一索引,且必须为not null,唯一索引和主键是多列时,只有所有的列都用作比较时才会出现eq_ref...或者多列主键、唯一索引中,使用第一个列之外的列作为等值查找也会出现,总之,返回数据不唯一的等值查找就可能出现。...using_union:表示使用or连接各个使用索引的条件时,该信息表示从处理结果获取并集 using intersect:表示使用and的各个索引的条件时,该信息表示是从处理结果获取交集 using...查询条件中分为限制条件和检查条件,5.6之前,存储引擎只能根据限制条件扫描数据并返回,然后server层根据检查条件进行过滤再返回真正符合查询的数据。
主要用于区别普通查询、联合查询、子查询等的复杂查询。 SIMPLE :简单的select查询,查询中不包含子查询或者UNION。...因为只匹配一行数据,所以很快。如将主键置于where列表中,MySQL就能将该查询转换为一个常量。 eq_ref: 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。...ref: 非唯一性索引扫描,返回匹配某个单独值的所有行。 本质上也是一种索引访问,它返回所有匹配某个单独值的行,然而,它可能会找到多个符合条件的行,所以它应该数据查询和扫描的混合体。...额外属性 Using filesort: 说明MySQL会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。MySQL中无法利用索引完成的排序操作称之为“文件排序”。...覆盖索引(Covering Index) : 就是 select 的查询的列从索引中就可以获取到,而不必去读取表中的原始数据,MySQL可以利用索引返回 select 列表中的字段,而不必根据索引再次读取数据文件
,不返回任何重复的行。...UNION是并集,而INTERSECT是交集。INTERSECT ALL则包含交集后的重复数据。...GROUP BY可以用来执行相同的功能在子查询中的ORDER BY。 子查询返回多于一行只能用于使用多值的运算符,如为IN,EXISTS,IN,ANY / SOME,ALL运算符。...AGE > 27 ); EXISTS / NOT EXISTS EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。...EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,因为IN不走索引,但要看实际情况具体使用:IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
文本文件导入推荐使用 Stream load(数据存储在本地文件中,数据量小于10GB) Mysql数据导入,推荐使用Mysql外表,insert into new_table select * from...Broker Load:Broker导入,即通过部署的Broker程序读取外部数据源(如HDFS)中的数据,并导入到StarRocks。Broker进程利用自身的计算资源对数据进行预处理导入。...用户通过 HTTP 协议发送请求将本地文件或数据流导入到 StarRocks中,并等待系统返回导入的结果状态,从而判断导入是否成功。...用户通过 MySQL 协议提交例行导入作业,生成一个常驻线程,不间断的从数据源(如 Kafka)中读取数据并导入到 StarRocks 中。...该查询计划会读取所包含的 Tablet 上的数据,然后通过 Broker 将数据写到远端存储指定的路径中。 上图描述的处理流程主要包括: 用户提交一个 Export 作业到 FE。
(如整数优于字符串),选择mysql内建时间类型而不是字符串,选择整数而不是字符串来保存IP 尽量避免使用NULL:任何包含null值的列都将不会被包含在索引中。...EXPLAIN id 表示执行顺序 id从大到小,id相同从上往下 select_type 查询类型 SIMPLE:查询中不包含子查询或者UNION PRIMARY 查询中若包含任何复杂的子部分,最外层查询则被标记为...DERIVED(衍生) UNION RESULT 从UNION表获取结果的SELECT被标记为UNION RESULT table 记录查询引用的表 TYPE: 访问类型,表示MySQL在表中找到所需行的方式...,返回匹配值域的行,常见于between, , in, like 等的查询 index: Full Index Scan,index与ALL区别为index类型只遍历索引树 ALL:Full Table...Index) 利用索引返回select列表中的字段,而不必根据索引再次读取数据文件 Using where Using temporary 表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询
:先查外表再匹配内表,而不是先查内表t2.当外表的数据很大时,查询速度会非常的慢。...优化的方法如下:可以取前一页的最大行数的id(将上次遍历到的最末尾的数据ID传给数据库,然后直接定位到该ID处,再往后面遍历数据),然后根据这个最大的id来限制下一页的起点。...Mysql数据库是按照行的方式存储,而数据存取操作都是以一个页的大小进行IO操作,每个IO单元中存储了多行,每行都是存储了该行的所有字段。...所以无论去一个字段还是多个字段,实际上数据库在表中需要访问的数据量其实是一样的。但是如果查询的字段都在索引中,也就是覆盖索引,那么可以直接从索引中获取对应的内容直接返回,不需要进行回表,减少IO操作。...所以in适合外表大而内表小的情况,而exists适合于外表小而内表大的情况。 10.
领取专属 10元无门槛券
手把手带您无忧上云