在 SQL 中优化 Select、删除、更新查询性能

Optimizing Select,delete,update query performance in SQL

我有一个问题,关于 sql

中哪个查询性能更好

SELECT

第一次比较:

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 服务器运行得更快?
通过使其 查找 执行得更快,并且您可以通过提供索引(类似于任何书籍中的索引)来实现这一点,索引可以帮助您快速找到章节。

因此,在您的查询中,如果您为 column1 创建一个 index,那么 sql 数据库可以快速 查找 来自的值索引并使您的 select更新删除 查询 运行快点。

拥有别名只会让您的代码更易读。与性能无关。

您发布的比较查询仅在编写它们的语法上有所不同。这两个查询的性能不会有任何不同。语法分析器将为这些查询生成相同的语法树。

你可以把它们想象成

int sum = x + y;

也可以写成

int sum = y + x;

它们的语法树是

   sum
  -   -
x       y

只能通过索引、table 秒收集的统计数据来观察性能差异。

关于索引的一些亮点

  1. indexes 与 table 中没有记录无关,而是更好的参数来分类索引性能是行的大小。

  2. (SizeOfKey attribute x noofrecords) in a table 是决定是否使用索引的更好参数

例如

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.