var
来源:景安资讯平台作者:小韩发布时间:2015-07-31点击:1451
一、sql如何进行优化?
其实也就是索引的优化,因为我们不可能修改数据结构的情况下,提高数据库的查询效率似乎也只能用索引了
1.创建索引:对于查询占主要的应用来说,索引显得尤为重要,可以有效地避免每次查询都全表扫描的情况出现,如果表的数据很大,而符合条件的数据又很少,那么不加索引就会引起性能下降。
2.复合索引
比如有一条语句是这样的:select * from users where area=’beijing’ and age=22;如果我们是在area和age上分别创建单个索引的话,由于mysql查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效率,但是如果在area、age两列上创建复合索引的话将带来更高的效率。
3.索引不会包含有NULL值的列,
4.使用短索引, 对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的 列,如果在前10 个或20 个字符内,多数值是惟一的,那么就不要对整个列进行索引。
5.不要在列上进行运算,在列上进行运算将会导致索引失效,进行全盘扫描。
6.不使用NOT IN和<>操作,将会导致索引失效,进行全盘扫描。
二、事务的四大属性分别是什么?
1.原子性(Atomicity):事务是一个完整的操作。
2.一致性(Consistency):当事务完成时,数据必须处于一致状态。
3.隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的。
4.持久性(Durability):事务完成后,它对于系统的影响是永久性的。
三、创建事务
T-SQL中管理事务的语句:
1 开始事务:begin transaction
2 提交事务:committransaction
3 回滚事务:rollback transaction
事务分类:
1 显式事务:用begin transaction明确指定事务的开始。
2 隐性事务:打开隐性事务:set implicit_transactions on,当以隐性事务模式操作时,SQL Servler将在提交或回滚事务后自动启动新事务。无法描述事务的开始,只需要提交或回滚事务。
3 自动提交事务:SQLServer的默认模式,它将每条单独的T-SQL语句视为一个事务。如果成功执行,则自动提交,否则回滚。
示例:张三转800元到李四帐户上。
use stuDB
go
–创建帐户表bank–
if exists(select* from sysobjects where name=’bank’)
drop table bank
create table bank
(
customerName char(10), –顾客姓名
currentMoney money –当前余额
)
go
/*//–添加约束,帐户不能少于元–*/
alter table bank add
constraint CK_currentMoneycheck(currentMoney>=1)
/*//–插入测试数据–*/
insert into bank(customerName,currentMoney)
select ‘张三’,1000union
select ‘李四’,1
select * from bank
go
/*//–使用事务–*/
use stuDB
go
–恢复原来的数据
–update bank set currentMoney=currentMoney-1000 where customerName=’李’
set nocount on –不显示受影响的行数
print ‘查看转帐事务前的余额’
select * from bank
go
/*//–开始事务–*/
begin transaction
declare @errorSum int –定义变量,用于累计事务执行过程中的错误
/*//–转帐–*/
update bank set currentMoney=currentMoney-800 where customerName=’张三’
set @errorSum=@errorSum+@@error –累计是否有错误
update bank set currentMoney=currentMoney+800 where customerName=’李四’
set @errorSum=@errorSum+@@error –累计是否有错误
print ‘查看转帐事务过程中的余额’
select * from bank
/*//–根据是否有错误,确定事务是提交还是回滚–*/
if @errorSum>0
begin
print ‘交易失败,回滚事务.’
rollback transaction
end
else
begin
print ‘交易成功,提交事务,写入硬盘,永久保存!’
commit transaction
end
go
print ‘查看转帐后的余额’
select * from bank
go
四、索引的定义是?
SQL Server允许用户在表中创建索引,指定按某列预先排序,从而大大提高查询速度(类似于汉语词典中按照拼音或者字画查找)。
五、索引作用是?
通过索引可以大大的提高数据库的检索速度,提高数据库的性能。
六、索引有几种类型?
1:唯一索引:唯一索引不允许两行有相同的索引值(其实也就是说唯一索引的这一列,每个值都是唯一的);
例如,如果在stuInfo表中的学员员身份证号(stuID) 列上创建了唯一索引,则所有学员的身份证号不能重复。
2:主键索引:定义表主键的时候,会自动创建主键索引(其实主键索引就是唯一索引的特例),主键索引要求每一个值都是唯一的且非空。
主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据。
3:聚集索引:表中各行的物理顺序与键值的逻辑顺序相同,每个表只能有一个。
4:非聚集索引:非聚集索引指定表的逻辑顺序,数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。
提示:SQL Server中,一个表只能创建1个聚集索引,多个非聚集索引。设置某列为主键,该列就默认为聚集索引
七、叙述一下索引的优缺点:
优点:加快访问速度,加强行的唯一性
缺点:带索引的表在数据库中的存储需要更多的空间;
版权声明:本文系技术人员研究整理的智慧结晶,转载勿用于商业用途,并保留本文链接,侵权必究!