[英]Optimizing Select,delete,update query performance in SQL
我有一个问题,关于哪个查询在sql中具有更高的性能更好
第一个比较:
Declare @Variable VARCHAR(MAX)<BR>
SELECT top 1 @VARIABLE = COLUMN2 FROM TABLE WHERE COLUMN1 like 'Any value'
第二个比较:
Declare @Variable varchar(MAX)
select top 1 @variable = t.column2 from table t where t.column1 like 'any value'
第一个比较:
UPDATE T set column2 = 'any value' from table T where column1 = 'any value'
第二个比较:
UPDATE TABLE SET COLUMN2 = 'any value' where column 1 = 'any value'
第一个比较:
delete t
from table t
where column1 = 'any value'
第二比较
delete from table where column1 = 'any value'
我只需要您对哪种查询更好的意见,如果有更好的方法来优化查询性能,有人可以告诉我这是怎么回事吗?
比较对性能无关紧要。
几乎所有时候sql performance
都与查找有关。 换句话说,sql数据库可以多快地检索数据。 在其他时间,它是关于您可以多快插入或删除 。
那么,如何使sql server快速执行?
通过使其查找更快,您可以通过提供索引(与任何书籍中的索引相似)来实现此目的,索引可以帮助您快速查找章节。
因此,在查询中,如果为column1
创建index
,则sql数据库可以快速从索引中查找值,并使select , update和delete查询运行得更快。
拥有别名只会使您的代码可读。 它与性能无关。
您发布的比较查询仅在编写语法方面有所不同。 这两个查询的性能不会有任何不同。 语法解析器将为这些查询生成相同的语法树。
您可以将它们视为
int sum = x + y;
也可以写成
int sum = y + x;
他们的语法树将是
sum
- -
x y
只有通过索引,为表收集的统计信息才能观察到性能差异。
有关索引的一些亮点
索引与表中没有记录无关,相反,对索引性能进行分类的更好的参数是行的大小。
表中的(SizeOfKey属性x noofrecords)是决定是否使用索引的更好参数
例如
no of records 5000, key column is Age with data type as byte i.e. 1 byte
total size = 5000 bytes i.e. not even 1 page - Indexes won't be useful.
no of records 5000, key column is money i.e. 8 bytes
total size = 5000 * 8bytes = 40000 bytes = 40000/8Kb = 5 pages (1 page = 8 kb)
Index won't be very helpful
no of records 50000, key column is byte i.e.
50000 bytes = 7 pages, index won't be very helpful
no of records 50000, key column is bigint i.e.
(50000*8bytes)/8Kb = 50 pages, index can be help up to some extent.
no of records 500000, key column is bigint i.e.
(500000*8bytes)/8Kb = 500 pages, index is most likely to be helpful depending upon your search arguments.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.