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

《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)

如果没有任何WHEN表达式结果为TRUE,CASE表达式返回ELSE子句中出现值。...当需要定义可重用表表达式时,可以使用视图或内联表值函数。如果不需要支持输入,使用视图;反之,使用内联表值函数。 四、集合运算 4.1 UNION 并集运算 ?   在T-SQL中。...UNION集合运算可以将两个输入查询结果组合成一个结果集。需要注意是:如果一个行在任何一个输入集合众出现,它也会在UNION运算结果中出现。...它对两个输入查询结果集进行操作,反会出现在第一个结果集中,但不出现在第二个结果集中所有行。   ...EXCEPT结合运算在逻辑上首先删除两个输入集中重复行,然后返回只在第一个集合中出现,在第二个结果集中不出现所有行。

1.9K51

Java性能调优--SQL篇:优化分页查询

2、select_type:查询类型 SIMPLE 简单SELECT(不使用UNION或子查询) PRIMARY 最外层SELECT UNION UNION第二个或之后SELECT语句 DEPENDENT...UNION UNION第二个或之后SELECT语句取决于外面的查询 UNION RESULT UNION结果 SUBQUERY 子查询第一个SELECT DEPENDENT SUBQUERY...子查询第一个SELECT, 取决于外面的查询 DERIVED 衍生表(FROM子句中查询) MATERIALIZED 物化子查询 UNCACHEABLE SUBQUERY 结果集无法缓存查询...这个值非常直观显示 SQL 效率好坏, 原则上 rows 越少越好. 11、filtered:这个字段表示存储引擎返回数据在server层过滤后,剩下多少满足查询记录数量比例,注意是百分比,不是具体记录数...在使用分页查询LIMIT M(起始位置),N(偏移量)时候,虽然我们只需要N条数据,数据库至少会扫描M+N条数据,如果M足够大,将会产生效率问题,比如这个例子: select * from

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

MySQL查询优化终极版(强烈建议收藏)

union:在union第二个和随后select语句。▲union result:从union临时表中查询结果select语句。...(6) possible_keys:可以使用索引,如果没有索引可用返回Null;也可能显示多个索引可以使用索引,如果没有索引可用返回Null;也可能显示多个索引。...(8) key_len:被选择key索引长度,如果没有使用索引,返回null表示索引使用字节数,一般情况下,索引长度越长精度越高,效率偏低;长度越短,精度越低,效率高。...注意:如果where后条件是组合索引,没有按照组合索引顺序使用ref为null。...▲Using temporary表示由于排序没有走索引、使用union、子查询连接查询使用某些视图等,一般出现在多张表数据需要排序情况下。

60500

查看Mysql执行计划

但是当数据规模增大,如千万、亿时候,我们运 行同样sql语句时却发现迟迟没有结果,这个时候才知道数据规模已经限制了我们查询速度。所以,查询优化和索引也就显得很重要了。...这里索引名字是创建索引时指定索引昵称;如果索引没有昵称,默认显示是索引中第一个名字。...UNION:子查询UNION,且为UNION 中从第二个SELECT 开始后面所有SELECT,同样依赖于外部查询结果集;PRIMARY:子查询最外层查询,注意并不是主键查询;SIMPLE...:除子查询或者UNION 之外其他查询; SUBQUERY:子查询内层查询第一个SELECT,结果不依赖于外部查询结果集; UNCACHEABLE SUBQUERY:结果集无法缓存查询UNION...:UNION 语句中第二个SELECT 开始后面所有SELECT,第一个SELECT 为PRIMARYUNION RESULT:UNION合并结果; 8、Extra 关于MYSQL如何解析查询额外信息

3.3K10

面试前必须知道MySQL命令【expalin】

前言 只有光头才能变强 刷面试题时候,不知道你们有没有见过MySQL这两个命令:explain和profile(反正我就见过了).. 之前虽然知道这两个命令大概什么意思,一直没有去做笔记。...PRIMARY:如果查询包含UNION 或子查询最外层查询被标识为PRIMARY UNION:表示此查询UNION第二个或者随后查询 DEPENDENT:UNION 满足 UNION...中第二个或者随后查询,其次取决于外面的查询 UNION RESULT:UNION 结果 SUBQUERY:子查询第一个select语句(该子查询不在from子句中) DEPENDENT SUBQUERY...,同时意味着 select 中某些特性阻止结果被缓存于一个 Item_cache 中 UNCACHEABLE UNION:满足此查询UNION第二个或者随后查询,同时意味着 select...1.3.5possible_keys 这一列显示查询可能使用哪些索引来查找 1.3.6key 这一列显示MySQL实际决定使用索引。如果没有选择索引,键是NULL。

98120

2019Java面试宝典 -- 数据库常见面试题

1、unionunion all区别? 如果我们需要将两个select语句结果作为一个整体显示出来,我们就需要用到union或者union all关键字。...外连接: 左连接(左外连接Left Join):以左表作为基准进行查询,左表数据会全部显示出来,右表如果和左表匹配数据显示相应字段数据,如果不匹配显示为 null。...右连接(右外连接 Right Join):以右表作为基准进行查询,右表数据会全部显示出来,左表如果和右表匹配数据显示相应字段数据,如果不匹配显示为 null。...这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只有最后一步生成表才会会给调用者。如果没有查询中指定某一个子句,将跳过相应步骤。 4、常用SQL 聚合函数?...: 1)查询表中n记录: select * from Table where rownum <= n 2)查询n 到第 m 条记录: select * from (select 表名.*,

2.2K20

MySql性能测试

增加一行:query_cache_type=0 /1 / 2 如果设置1,将会缓存所有的查询结果,除非你select语句使用SQL_NO_CACHE禁用了查询缓存 如果设置2,只缓存在select语句中通过...:在FROM列表中包含查询被标记为DERIVED(衍生),MySQL会递归执行这些子查询, 把结果放在临时表里 UNION:若第二个SELECT出现在UNION之后,被标记为UNION;若UNION...如果为NULL,则没有使用索引; 查询中若使用了覆盖索引,该索引仅出现在key列表中:select 查询字段个数、顺序和复合索引字段个数、顺序一一符合 ?...第一行(执行顺序4):id列为1,表示是union第一个select,select_type列primary表 示该查询为外层查询,table列被标记为,表示查询结果来自一个衍生表,其中derived3...t2】 第五行(执行顺序5):代表从union临时表中读取行阶段,table列表示用第一个和第四个select结果进行union操作。

1.9K40

SQL命令 UNION

如果指定,返回重复数据值。 如果省略,重复数据值将被抑制。 %PARALLEL - 可选—%PARALLEL关键字。 如果指定,union每一边都作为单独进程并行运行。...结果列名取自联合第一个分支中列(或列别名)名称。 在两个分支中对应没有相同名称情况下,在所有分支中使用相同列别名来标识结果列可能会很有用。...如果任何UNION分支中任何列是空结果列元数据报告为空UNION结果字符串字段具有相应SELECT字段排序规则类型,如果字段排序规则不匹配,分配精确排序规则。...TOP...ORDER BY应用于UNION结果如果UNION位于FROM子句查询中,TOP和ORDER BY将应用于UNION结果。...如果其中一个FROM %PARALLEL查询生成查询计划没有显示并行化,那么UNION查询将不支持%PARALLEL。

1.5K20

Mssql注入从入门到掌握

语句,如果返回正常那么就说明网站所使用数据库是Mssql数据库,因为Mssql数据库默认有一个sysobjects表明。...我们再来看看第四个(其实有两个显示位就足够了): ? 猜测第四个时候页面没有什么反应,说明它只存在‘2’、‘3’两个显示位!...这边查询出来第一个表示 manage,然后我们再去查第二个(到了这里我靶机重启了一下,所以端口变了): http://219.153.49.228:43946/new_list.asp?...查询出来第二个表名是 announcement,如果想继续查的话继续用 not in 这条判断查询就行了!...这边查询出来第一个列名是 id,我们继续查第二个列名只需要把数字1修改为2就行了 col_name(object_id('manage'),2 http://219.153.49.228:43946/

2.7K20

学弟问我:explain 很重要吗?

通过它可以知道自己写 sql 语句是否足够高效以及还有哪些可以优化地方。...union:表示此查询UNION第二个或随后查询 union result:从 union 临时表检索结果 select 举个栗子,帮助你们分清楚区别: explain select 1...dependent union:此查询UNION第二个或随后查询,其次取决于外面的查询 uncacheable union:此查询UNION第二个或随后查询,同时意味着 select...第一个 select,同时意味着 select 中某些特性阻止结果被缓存于一个 Item_cache 中 PS:只需要弄懂前四个即可,其他知道就好。...3.6 key 列 表示 MySQL 执行查询实际使用那些索引来查找,如果为 null,证明没有使用索引。

64130

经典SQL 语句大全

因为这样可以避免 top字段如果是逻辑索引查询结果后实际表中不一致(逻辑索引中数据有可能和数据表中不一致,而查询如果处在索引首先查询索引) 14、说明:前10条记录 select...交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行笛卡尔积,其结果集合中 数据行数等于第一个表中符合查询条件数据行数乘以第二个表中符合查询条件数据行数。...,返回到结果集合中数 据行数等于第一个表中符合查询条件数据行数乘以第二个表中符合查询条件数据行数。...交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行笛卡尔积,其结果集合中 数据行数等于第一个表中符合查询条件数据行数乘以第二个表中符合查询条件数据行数。...,返回到结果集合中数 据行数等于第一个表中符合查询条件数据行数乘以第二个表中符合查询条件数据行数。

1.8K10

(4) MySQL中EXPLAIN执行计划分析

ID列 ID列中的如果数据为一组数字,表示执行SELECT语句顺序;如果为NULL,说明这一行数据是由另外两个SQL语句进行 UNION操作后产生结果集 ID值相同时,说明SQL执行顺序是按照显示从上至下执行...列表中查询 DEPENDENT SUBQUERY 依赖外部结果查询 UNION Union操作第二个或是之后查询值为union DEPENDENT UNIONUNION作为子查询时,...第二或是第二个查询select_type值 UNION RESULT UNION产生结果集 DERIVED 出现在FROM子句中查询 3....TABLE列 包含以下几种结果: 输出去数据行所在表名称,如果表取了别名,显示是别名 : 由ID为M,N查询union产生结果集 /<subquery...KEY列 查询优化器优化查询实际所使用索引 如果表中没有可用索引,显示为NULL 如果查询使用了覆盖索引,该索引仅出现在Key列中 9.

89920

经典sql server基础语句大全

因为这样可以避免 top字段如果是逻辑索引查询结果后实际表中不一致(逻辑索引中数据有可能和数据表中不一致,而查询如果处在索引首先查询索引) 14、说明:前10条记录 select top...交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行笛卡尔积,其结果集合中 数据行数等于第一个表中符合查询条件数据行数乘以第二个表中符合查询条件数据行数。...,返回到结果集合中数 据行数等于第一个表中符合查询条件数据行数乘以第二个表中符合查询条件数据行数。...交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行笛卡尔积,其结果集合中 数据行数等于第一个表中符合查询条件数据行数乘以第二个表中符合查询条件数据行数。...,返回到结果集合中数 据行数等于第一个表中符合查询条件数据行数乘以第二个表中符合查询条件数据行数。

2.6K20

sql 复习练习

因为这样可以避免 top字段如果是逻辑索引查询结果后实际表中不一致(逻辑索引中数据有可能和数据表中不一致,而查询如果处在索引首先查询索引) 14、说明:前10条记录 select top...交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行笛卡尔积,其结果集合中 数据行数等于第一个表中符合查询条件数据行数乘以第二个表中符合查询条件数据行数。...,返回到结果集合中数 据行数等于第一个表中符合查询条件数据行数乘以第二个表中符合查询条件数据行数。...交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行笛卡尔积,其结果集合中 数据行数等于第一个表中符合查询条件数据行数乘以第二个表中符合查询条件数据行数。...,返回到结果集合中数 据行数等于第一个表中符合查询条件数据行数乘以第二个表中符合查询条件数据行数。

2K60

大象起舞:用PostgreSQL解海盗分金问题

,并且前者比后者更重要,因此会产生以下三种结果,其中收益逐个递减 保命,且尽可能多地获得金币 保命,没金币 没命 原问题假定所有的海盗都足够理智、足够聪明,言下之意是海盗们会权衡:当且仅当,同意当前方案带来收益...利益虽然小,两个党派成员都清楚,若非本党派人士担任总统,会连这一点小利益都没有,因此都会支持自己党派成员,以获得这看似不大最高收益。...海盗信息可以用一个长度为2整型数组来保存,其中第 一项保存海盗编号,第二项保存海盗收益,如果海盗"没命"金额`null`。...在"数据结构"一节中已经提过,策略数据结构是二维整数数组,前文为了排序,已将数组转成行记录,先需要使用 PostgreSQL 窗口函数 `array_agg` 再将行记录转成数组,同时使用 `array_cat...union all select n + 3 from foo where n < 5 ) select * from foo; 这段递归查询代码功能等价于以下迭代 Python 代码: (queue

80960

MySQL 调试篇

如果该行指的是 union 结果则可以是 null。SQL 中有几个 select 就会有几个不同ID(关联查询 ID 是一样),具体还得看优化器优化后 SQL 去判断。...如果使用查询没有被优化器优化成多表连接的话最外层查询就是 PRIMARY。如果使用 union 或者 union all,最左边就是 PRIMARY。...UNIONUNION 中第二或者之后查询使用 union 后,第一个是 PRIMARY,第二个之后就是 union 了(除了最后一个)。...使用 union 后,一般最后就是 union 去重后结果了,也就是 UNION RESULT。SUBQUERY子查询第一个查询。...ref(JSON-[ref])当使用索引时,等值比较比较对象。如果值为func,使用值是某个函数结果。rows(JSON-[rows])这个表示优化器认为当前查询必须要扫描行数才能拿到结果

18011

详解SQL集合运算

2.UNION ALL集合运算 (1)假设Query1返回m行,Query2返回n行,Query1 UNION ALL Query2返回(m+n)行; (2)UNION ALL 不会删除重复行,所以它结果就是多集...(4)不能显示指定DISTINCT字句,如果不指定ALL,默认使用DISTINCT。 (5)当Query1与Query2比较某行记录是否相等时,会认为取值为NULL列是相等列。...(5)不能显示指定DISTINCT字句,如果不指定ALL,默认使用DISTINCT。 (6)当Query1与Query2比较某行记录是否相等时,会认为取值为NULL列是相等列。...(6)不能显示指定DISTINCT字句,如果不指定ALL,默认使用DISTINCT。 (7)当Query1与Query2比较某行记录是否相等时,会认为取值为NULL列是相等列。...如定义一个基于该TOP查询表表达式,然后通过一个使用这个表表达式外部查询参与集合运算。 七、练习题 1.写一个查询,返回在2008年1月有订单活动,而在2008年2月没有订单活动客户和雇员。

2.2K80

Explain 执行计划 和 SQL优化

且只有一个 unionunion连接两个select查询第一个查询是dervied派生表,除了第一个表外,第二个以后表 select_type都是union dependent union:与union...那么这里显示是别名,如果不涉及对数据表操作,那么这显示为null,如果显示为尖括号括起来就表示这个是临时表,后边N就是执行计划 中id,表示结果来自于这个查询产生。...如果是尖括号括起来,与类似, 也是一个临时表,表示这个结果来自于union查询id为M,N结果集 Type列 :表示访问类型,性能从低到高依次是:ALL...,该索引将被列出,但不一定被查询使用 Key列: 表示MySQL在查询中实际使用索引,若没有使用索引,显示为NULL key_len列: 表示索引中使用字节数,可通过该列计算查询使用索引长度...数据插入回去 测试单表在没有索引下全表扫描和走索引情况下性能对比: select 查询加上sql_no_cache 查询时候不使用缓存 ,突出我实验结果 上面图片很明显是 走索引情况查询速度更快

64520

but六种用法_比较级用法和句型

列表中包含了子查询 DERIVED 在FROM列表中包含查询被标记为DERIVED(衍生),MySQL会递归执行这些子查询,把结果放在临时表中 UNION第二个SELECT出现在UNION...之后,被标记为UNION:若UNION包含在FROM子句查询中,外层SELECT将被标记为:DERIVED UNION RESULT 从UNION表获取结果SELECT 2.3 table...查询涉及到字段上若存在索引,该索引将被列出,但不一定被查询实际使用。 key 实际使用索引,如果为NULL,则没有使用索引。...(可能原因包括没有建立索引或索引失效) 查询中若使用了覆盖索引(select 后要查询字段刚好和创建索引字段完全相同),该索引仅出现在key列表中 2.6 key_len 表示索引中使用字节数...,为整个查询第二个select【select id from t3】 执行顺序4:id列为1,表示是UNION第一个select,select_type列primary表示该查询为外层查询,table

49560

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券