学SQL感觉蛮有意思的,话不多说,来点干货。关于数据语句的优化。我觉得大家想到的第一点是表的索引。查询慢了看看表索引。
在数据库查询语句数据库会选择最优的查询计划 叫做执行计划。 它是一个不固定的,是根据查询的表和条件进行改变。
1.sql 语句的写法。
SELECT * FROM DATA_OP select * from data_op
这二个语句对于我们来说是一样的,但数据库不会这么认为。
2.sql语句不要写的太复杂,当然复杂的sql语句执行肯定会慢的。
3.sql中的临时表,暂缓中间结果集。减少的查询扫描主表的开销。
4.查询语句用于条件对于不同参数,用变量来代替,这样减少。
select * from data_op where id=@id
@id 为参数可以重复利用 sql 的执行计划。下面这样 就不是优化了
select * from data_op where sex=@sex @sex 变量,对于中国来说,大部分是 汉,少数为其他。这样如果一开始传入的变量是汉。查询分析器是时全表扫描。如果往后的变量不是汉,那么 会导致查询缓慢。 对于这样少数的字段,用索引查询快
5. 这里在优化语句中默认都是有一个事务。理解 事务就是控制 执行的内容,要么都成功,要么都失败
begin transaction update data_op set Password =3 where id=3 waitfor delay '0:0:5' update data_op set Password =4 where id=4 commit transaction
所以 在一个事务中 SQL 语句存在大量数据,会导致 表的阻塞,从而使性能降低
6.sql语句查询要加上nolock ,针对sql service ,如果oralce ,怎不会出现死锁。因为oracle的结构更为合理,有undo表空间保存“数据前影”。sql 中临时表也相当于“数据前影”。
select * from data_op(nolock)
加的这个nolock 有些缺点,查询的数据不准确,但是这样可以有效的防止,查询时候不出错,导致系统长时间在查询数据。
7 新建索引的问题 关于这个问题 我后面会了解。
8.语句查询条件 like 用到这个 语法 表示 表要进行全表扫描。增大数据库开销
9.在jion 表时,需要注意一下链接的表的 结果集,和字段的索引。
加油! --小伙子。
以上内容,均是看网上和自己总结的,如有侵犯版权问题。请告知。谢谢