SQL—搜索大型数据集的快速方法
我的SQL数据库可能会存储数亿条记录 目前,单个表存储多个设备的记录。我需要快速返回单个设备的信息。仅查询特定设备的记录的最快方法是什么 我试着使用下面的子查询,但是在测试中这并没有改善功能,索引也没有,尽管这可能是因为我做得不正确 我的问题之一是:SQL—搜索大型数据集的快速方法,sql,sql-server,Sql,Sql Server,我的SQL数据库可能会存储数亿条记录 目前,单个表存储多个设备的记录。我需要快速返回单个设备的信息。仅查询特定设备的记录的最快方法是什么 我试着使用下面的子查询,但是在测试中这并没有改善功能,索引也没有,尽管这可能是因为我做得不正确 我的问题之一是: SELECT SINGLEDEVICE.[speed] FROM (SELECT * FROM DEVICES WHERE Device = 'Device 1') AS SINGLEDEVICE WHERE Speed > 100 尝试创
SELECT SINGLEDEVICE.[speed] FROM
(SELECT * FROM DEVICES WHERE Device = 'Device 1') AS SINGLEDEVICE
WHERE Speed > 100
尝试创建以下索引
CREATE INDEX devices_device_speed
ON devices
(device,
speed);
然后去掉子查询。充其量,它会被优化掉,甚至会减慢速度
SELECT speed
FROM devices
WHERE device = 'Device 1'
AND speed > 100;
尝试创建以下索引
CREATE INDEX devices_device_speed
ON devices
(device,
speed);
然后去掉子查询。充其量,它会被优化掉,甚至会减慢速度
SELECT speed
FROM devices
WHERE device = 'Device 1'
AND speed > 100;
如果不存在,则创建索引
IF NOT EXISTS (SELECT 1 FROM sys.indexes I WHERE I.Name = 'NCIX_DEVICES_device_speed' AND I.object_id = OBJECT_ID('DEVICES'))
CREATE NONCLUSTERED INDEX NCIX_DEVICES_device_speed ON DEVICES ( Device,Speed)
GO
如果可能,最好避免子查询
SELECT d.speed
FROM DEVICES d
WHERE d.device = 'Device 1'AND d.speed > 100;
如果不存在,则创建索引
IF NOT EXISTS (SELECT 1 FROM sys.indexes I WHERE I.Name = 'NCIX_DEVICES_device_speed' AND I.object_id = OBJECT_ID('DEVICES'))
CREATE NONCLUSTERED INDEX NCIX_DEVICES_device_speed ON DEVICES ( Device,Speed)
GO
如果可能,最好避免子查询
SELECT d.speed
FROM DEVICES d
WHERE d.device = 'Device 1'AND d.speed > 100;
当您从数百万条记录中搜索时,Sqlserver引入了 其搜索使用关键字“Contains”,语法为
SELECT product_id
FROM products
WHERE CONTAINS(product_description, "Snap Happy 100EZ" )
AND product_cost < 200 ;
选择产品标识
来自产品
其中包含(产品描述,“Snap Happy 100EZ”)
产品成本<200;
在fts之前,使用主键、适当的外键以加快速度。从实现的角度来看,它是非常容易的,并给出了任意搜索的快速搜索
它有优点也有缺点
当您从数百万条记录中搜索时,Sqlserver引入了 其搜索使用关键字“Contains”,语法为
SELECT product_id
FROM products
WHERE CONTAINS(product_description, "Snap Happy 100EZ" )
AND product_cost < 200 ;
选择产品标识
来自产品
其中包含(产品描述,“Snap Happy 100EZ”)
产品成本<200;
在fts之前,使用主键、适当的外键以加快速度。从实现的角度来看,它是非常容易的,并给出了任意搜索的快速搜索
它有优点也有缺点
如果只有几个设备,您还可以按设备对表进行分区。如果只有几个设备,您还可以按设备对表进行分区。您有多少个设备?通常返回多少行?您有多少设备?通常返回多少行?谢谢您的帮助。索引未正确优化。感谢您的帮助。索引未正确优化。