一、覆盖索引
覆盖索引(covering index)指一个查询语句的执行只用从索引中就能够取得,不必从数据表中读取。也可以称之为实现了索引覆盖。
如果一个索引包含了(或覆盖了)满足查询语句中字段与条件的数据就叫做覆盖索引。
二、覆盖索引实例
1.未建立索引前
2.添加覆盖索引
三、总结
当一条查询语句符合覆盖索引条件时,sql只需要通过索引就可以返回查询所需要的数据,这样避免了查到索引后再返回表 *** 作,减少I/O提高效率。
使用覆盖索引Innodb比MyISAM效果更好----InnoDB使用聚集索引组织数据,如果二级索引中包含查询所需的数据,就不再需要在聚集索引中查找了
注:遇到以下情况,执行计划不会选择覆盖查询
1.select选择的字段中含有不在索引中的字段 ,即索引没有覆盖全部的列。
2.where条件中不能含有对索引进行like的 *** 作。
假设两个表结构完全相同。不同的话就需要指明所有的列。Replace table2 Select * From table1
假设表名叫t1, 有id, name两个字段,其中id是主键,或者是唯一的字段
REPLACE t1 (id, name) VALUES(1, 'alan')
多条情况:
REPLACE t1 (id, name) VALUES(1, 'alan'), (2, 'lstt'), (3, 'ssnl')
原理是:id不存在是就插入一条,存在是就自动删除原来的,再插入新的
所以,REPLACE不能只修改其中的一个
如果是后者情况,只能先判断是否存在,再UPDATE了
比如:
1、selec name as “姓名” ,sex as "性别" from user
2、select u.name as “姓名”,o.name as "英文名" ,u.sex as "性别" from user u ,other o where u.id = o.id
as不是给表里的字段取别名,而是给查询的结果字段取别名。
其目的是让查询的结果展现更符合人们观看习惯,在多张表查询的时候可以直接的区别多张表的同名的字段。
扩展资料:
SQL别名:
SQL别名用于为表或表中的列 提供临时名称。
SQL别名通常用于使表名或列名更具可读性。
SQL一个别名只存在于查询期间。
别名使用AS关键字赋予。
在下列情况下使用别名:
1,查询涉及多个表
2,用于查询函数
3,需要把两个或更多的列放在一起
4,列名长或可读性差
语法
1、表名的别名语法:
SELECT 列名
FROM 表名 AS 别名
2、列名的别名语法:
SELECT 列名 AS 别名
FROM 表名
3、表名和列名的别名混合使用语法:
SELECT 列名 AS 别名
FROM 表名 AS 别名
语法举例
1、使用表名称别名
有两个表分别是:"Persons" 和 "Product_Orders"。分别为它们指定别名 "p" 和 "po"。列出 "John Adams" 的所有定单。
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName='Adams' AND p.FirstName='John'
2、使用列名称别名
查询 Persons 表中的 LastName 列 (为其定义别名 '姓氏')和 FirstName 列(为其定义别名 ‘名字’),输出所有结果值。
SELECT LastName AS 姓氏, FirstName AS 名字
FROM Persons
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)