mysql索引
使用索引—编写代码时候尽可能利用索引,不过非常小的表除外。因为表小,忽略表中索引能使表的读取更为高效。
什么是索引
数据库中的索引是某个表中一列或多列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
创建索引语法:
create [索引类型] index 索引名称
on 表名(列名)
[with fill factor = 填充因子值0-100]
go
例子:
create index a on table1(id,name);
使用sql:
select * from table1(index = a) where id=1 and name=“你好”;
注意:
select * from table where a = 1 and b=2 and c=3;
如果有索引index(a,b,c),那么where 子句中字段的顺序应和索引中字段顺序一致。
1,索引类型
关系型数据库中最常用的一种索引是二叉树(b-tree)索引。
唯一索引与非唯一索引——唯一索引是指一张表中允许有一个值的索引。慎用唯一索引,因为对唯一索引字段的插入和更新需要扫描整个索引空间。唯一索引提高性能一般用于主键。
复合索引--多字段索引,但是单字段索引比复合字段索引更为高效。
索引数据类型--最好使用整数
mysql中select 查询条件
1,in 与 exists集合运算符--in 运算符用于测试一系列文字值中的某个值
select * from table where id in (1,2,3,4);
Exists用于检查值的动态集合,例如由子查询生成的集合
select * from table where exists (select id from table2);
2,having和where用法
having子句会筛选聚合组合,并在数据库所有i/o活动完成后进行帅选,
使用where的效率更高话,就不要使用having
select id,name,avg(score) from table group by name having id > 5 and avg(score) >10;
将having子句中的id>5限制条件转移到where 子句中修改后如下:
select id,name,avg(score) from table where id>5 group by name having avg(score) > 10;
这样的话效率就执行更高
因为having在id进行帅选的时候不会限制i/o活动,
3,连接
内部连接—内部链接是两个表的交集,交集是最高效的连接类型
select P.name as publisher , E.id from table1 P join table2 E using (id);
脑补下: using 可以简化 on 的语法
table1 inner join table2 on table1.id = table2.id 类似于 table1 inner join table2 using(id)
外部连接--与内部连接相反,返回的是另外一个表所不包含的。
select P.name as publishber , E.id from table1 P left outer join table2 E using(id);
交叉连接--一种笛卡尔乘积,将一个表中的所有记录连接到另一个表中的所有记录。cross join
mysql多条件join mysql多条件查询索引
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
MySQL 多条件 子查询 mysql多条件join
mysql 数据操作(多表连接查询,INNER JOIN,LEFT JOIN,RIGHT JOIN,复合条件连接查询,子查询)
MySQL 多条件 子查询 mysql 子查询 内连接 -
iOS OSSTask设置断点下载
什么叫断点下载?迅雷就可以断点下载!就是说下载了一半,然后把下载中断,明天打开电脑再继续下载。如果我在下载一个文件,先下载了50%,然后停止下载,然后再继续下载省下的50%。这里有两个问题需要我们处理:下载到的数据要追加到原来已下载文件的尾部,而不是创建新文件。 第一个问题我们应该知道怎么处理,我们在学习IO流时应该知道FileOutputStream类的构造器可以接受一人boolean类型的参数
iOS OSSTask设置断点下载 url HttpURLConnection stringbuilder io流