intersect

mysql explain

你说的曾经没有我的故事 提交于 2020-12-14 22:21:07
explain SELECT `pname`,`attrname`,`parts_unit`,`parts_price` FROM `wy_parts` LEFT JOIN wy_parts_attribute ON wy_parts_attribute.partsid = wy_parts.partsid WHERE wy_parts_attribute.paid = '15'; id select_type table type possible_keys key key_len ref rows Extra SQL执行的顺序的标识,越大越先执行,如果说数字一样大,那么就从上往下依次执行 查询中每个select子句的类型 显示这一行的数据是关于哪张表的,有时不是真实的表名字,看到的是derivedx(x是个数字,我的理解是第几步执行的结果) 显示连接使用了何种类型。从最好到最差的连接类型为const(system)、eq_reg、ref、range、index和ALL(至少达到range级别最好能达到ref) 显示可能应用在这张表中的索引。如果为空,没有可能的索引 实际使用的索引 。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个possible

Linq表达式、Lambda表达式你更喜欢哪个?

爷,独闯天下 提交于 2020-12-04 04:53:26
什么是Linq表达式?什么是Lambda表达式? 如图: 由此可见Linq表达式和Lambda表达式并没有什么可比性。 那与Lambda表达式相关的整条语句称作什么呢?在微软并没有给出官方的命名,在《深入理解C#》中称为点标记。 查询表达式、点标记你更喜欢哪个? 所以,我们的标题的提问根本就不合适。应该是“查询表达式和点标记你更喜欢哪个?”。如: //查询表达式 var students1 = from t in db.Students where t.Name == "张三" select new { t.Id, t.Name, t.Age }; //点标记 var students2 = db.Students .Where(t => t.Name == "张三") .Select(t => new { t.Id, t.Name, t.Age }); 为什么选择点标记 我相信更多的人偏向选择点标记。具体什么原因我也说不清(可能是点标记中的Lambda更加优雅吧)。对于我个人来说,也是更加喜欢点标记这种方式。 1、所有的查询表达式都可以转成对应的点标记。反之,不是所有的点标记都可以转成查询表达式。 为什么?因为查询表达式在编译后就直接变成了点标记:(以下是上面两个语句对应的编译后的反编译C#代码) 生成了一模一样的代码。(由于是编译后的,好多乱七八糟的代码

SQL优化,优化执行性能十种方式

半城伤御伤魂 提交于 2020-12-04 02:34:11
1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用. 解决办法: 其实只需要对该脚本略做改进,查询速度便会提高近百倍。改进方法如下: a、修改前台程序——把查询条件的供应商名称一栏由原来的文本输入改为下拉列表,用户模糊输入供应商名称时,直接在前台就帮忙定位到具体的供应商,这样在调用后台程序时,这列就可以直接用等于来关联了。 b、直接修改后台——根据输入条件,先查出符合条件的供应商,并把相关记录保存在一个临时表里头,然后再用临时表去做复杂关联 2.索引问题 在做性能跟踪分析过程中,经常发现有不少后台程序的性能问题是因为缺少合适索引造成的,有些表甚至一个索引都没有。这种情况往往都是因为在设计表时,没去定义索引,而开发初期,由于表记录很少,索引创建与否,可能对性能没啥影响,开发人员因此也未多加重视。然一旦程序发布到生产环境,随着时间的推移,表记录越来越多 这时缺少索引,对性能的影响便会越来越大了。 这个问题需要数据库设计人员和开发人员共同关注 法则:不要在建立的索引的数据列上进行下列操作: ◆避免对索引字段进行计算操作 ◆避免在索引字段上使用not,<>,!= ◆避免在索引列上使用IS NULL和IS NOT NULL ◆避免在索引列上出现数据类型转换 ◆避免在索引字段上使用函数

学习数据库系统概论这一篇就够了

冷暖自知 提交于 2020-11-27 12:32:38
目录 第一章 数据库绪论 1.1、数据库系统概述 1.1.1、数据库的四个概念 1.1.2、数据库系统的特点 1.2、数据库数据模型 1.2.1、数据模型的概述 1.2.2、数据模型的要求 1.2.3、数据模型的分类 1.2.4、概念模型的概述 1.2.5、数据模型的组成 1.2.6、常见的数据模型 1.2.7、层次模型 1.2.7.1、概述 1.2.7.2、特点 1.2.7.3、数据结构 1.2.7.4、数据操纵 1.2.7.5、完整性约束条件 1.2.7.6、优缺点 1.2.8、网状模型 1.2.8.1、概述 1.2.8.2、描述 1.2.8.3、数据结构 1.2.8.4、数据操纵 1.2.8.5、完整性约束条件 1.2.8.6、优缺点 1.2.9、关系模型 1.2.9.1、概述 1.2.9.2、特点 1.2.9.3、数据结构 1.2.9.4、数据操纵 1.2.9.5、完整性约束条件 1.2.9.6、优缺点 1.3、数据库系统结构 1.3.1、数据库系统的模式概念 1.3.2、数据库系统的三级模式结构 1.3.3、数据库系统的二级映像功能 1.4、数据库系统的组成 1.5、数据库管理员职责 第二章 关系数据库 2.1、关系概述 2.1.1、关系 2.1.2、关系模式 2.1.3、关系数据库 2.1.4、关系模型的存储结构 2.2、关系操作 2.3、关系完整性 2.3.1

Codeforces 888F

有些话、适合烂在心里 提交于 2020-11-26 03:57:20
Problem Link: http://codeforces.com/problemset/problem/888/F Problem Statement: F. Connecting Vertices time limit per test: 4 seconds memory limit per test: 256 megabytes input: standard input output: standard output There are n points marked on the plane. The points are situated in such a way that they form a regular polygon (marked points are its vertices, and they are numbered in counter-clockwise order). You can draw n  - 1 segments, each connecting any two marked points, in such a way that all points have to be connected with each other (directly or indirectly). But there are some

Oarcle数据库学习总结大全(1)

帅比萌擦擦* 提交于 2020-11-24 12:30:48
1.数据库 1.登陆数据库 使用windows+r健,然后输入cmd,进入命令框,连接用户,sqlplus+用户名/密码 把会话环境改成中文模式: alter session set nls_language = 'simplified chinese' ; 把会话环境改成英文模式: alter session set nls_language = english ; 然后导入数据表: @表名.sql. sql语句的分类: 1.DQL:主要是查询语句语言———主要是select语句 2.DML:数据操纵语言———改变数据库中的是数据, 主要是insert,update,delete语句 3.DDL:数据定义语言———主要是建立修改删除数据库中的对象, 主要是create,alter,drop,truncate语句 4.TCL:事物控制语句,用来维护事物的一致性, 主要是commit,rollback,savapoint语句 5.DCL:数据控制功能 用来执行权限授予和权限收回操作, 主要是grant,revoke语句 1.单行函数 select语句基础 举几个例子: 1.查看s_dept中所有的记录 select * from s_dept ; 2.查看s_dept中的指定字段 select id , name , salary from s_dept ; 2.运算: 1

[LeetCode] 349. Intersection of Two Arrays 两个数组相交

别等时光非礼了梦想. 提交于 2020-11-22 03:22:33
Given two arrays, write a function to compute their intersection. Example 1: Input: nums1 = [1,2,2,1], nums2 = [2,2] Output: [2] Example 2: Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4] Output: [9,4] Note: Each element in the result must be unique. The result can be in any order. 解法:由于结果中要求元素是唯一的,所以用set来统计num1 中的数字。再循环num2中的数字,在set中存在就记录到结果中,同时从set中删除。 Java: HashSet, T: O(n) class Solution { public int[] intersection(int[] nums1, int[] nums2) { HashSet<Integer> set = new HashSet<Integer>(); ArrayList<Integer> res = new ArrayList<Integer>(); //Add all elements to set from array 1 for(int i =0; i<