获取除主键之外的列

USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
GO
CREATE TABLE t(
	id INT IDENTITY(1,1) PRIMARY KEY,
	c1 INT,
	c2 int	
)
GO
DECLARE @sql NVARCHAR(MAX)

SELECT @sql=STUFF(
	(
		SELECT ','+c.name 
		FROM sys.[columns] AS c WHERE c.[object_id]=OBJECT_ID('t') AND NOT EXISTS(
			SELECT * FROM sys.indexes AS i INNER JOIN sys.index_columns AS ic ON i.[object_id]=ic.[object_id] AND i.[object_id]=c.[object_id] 
			AND i.is_primary_key=1 AND ic.column_id=c.column_id	
	    )
	    FOR XML PATH('')
	),1,1,'' 
)
SET @sql='select '+@sql+' from t'
SELECT @sql
/*
(无列名)
select c1,c2 from t
*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您需要进行多个主键查询的优化,可以考虑以下几个方面: 1. 使用合适的索引:确保对主键创建了适当的索引。主键通常是表的唯一标识符,并且默认情况下会自动创建一个主键索引。如果您需要同时查询多个主键,可以考虑创建一个包含多个的复合索引,以便一次性获取所需的数据。 2. 批量查询:尽量将多个主键查询合并为一次查询,以减少与数据库的通信次数。您可以使用`IN`运算符将多个主键值组合到一个查询中,例如:`SELECT * FROM table WHERE primary_key IN (value1, value2, value3)`。 3. 使用缓存:如果多个主键查询的结果在一段时间内不会改变,可以考虑将查询结果缓存起来,以避免重复查询数据库。常见的缓存技术包括使用缓存服务器(如Redis)或应用程序级别的缓存。 4. 考虑分片和分区:如果数据量非常大,并且主键查询仍然较慢,可以考虑使用分片或分区技术来水平扩展数据库。这样可以将数据分散到多个服务器上,提高查询性能。 5. 数据库优化:除了针对主键查询的优化之外,还应该考虑其他数据库性能优化技术,如合理的索引设计、查询优化、适当的数据库配置等。 需要根据具体的情况来评估和实施这些优化策略,并进行性能测试以验证效果。同时,注意在进行优化之前,也要确认性能问题是否真的出现在多个主键查询上,而不是其他部分的查询或业务逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值