在 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 秒收集的统计数据来观察性能差异。
关于索引的一些亮点
indexes 与 table 中没有记录无关,而是更好的参数来分类索引性能是行的大小。
(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.
我有一个问题,关于 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 秒收集的统计数据来观察性能差异。
关于索引的一些亮点
indexes 与 table 中没有记录无关,而是更好的参数来分类索引性能是行的大小。
(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.