我对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'
我只是需要您对哪个查询更好的看法,如果有更好的方法来优化我的查询效果,有人可以告诉我它是怎么回事吗?
答案 0 :(得分:2)
比较与性能无关。
几乎所有时间sql performance
都与查找有关。换句话说,sql数据库可以检索多快的数据。在其他时候,它是关于你插入或删除的速度。
那么,如何让sql server快速执行? 通过使查找更快地执行并通过提供索引来实现,类似于任何书中的索引,索引可以帮助您快速查找章节。
因此,在您的查询中,如果为index
创建column1
而不是sql数据库,则可以快速搜索索引中的值并使选择,更新和删除查询运行得更快。
拥有别名只会使您的代码可读。它与性能无关。
答案 1 :(得分:0)
您发布的比较下的查询仅在编写它们的语法上有所不同。两个查询的性能都没有任何不同。语法解析器将为这些查询生成相同的语法树。
您可以将其视为
int sum = y + x;
也可以写成
sum
- -
x y
它们的语法树将是
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.
只有通过索引,为表格收集的统计数据才能观察到性能差异。
有关索引的一些亮点
索引与表中不存在的记录无关,而是将索引性能分类的更好参数是行的大小。
(SizeOfKey属性x noofrecords)是决定是否使用索引的更好参数
e.g。
{{1}}