Lucene代替SQL Server NewGuid获取随机结果

简介:

站点中有个随机获取的功能用了SQL Server 的NewGuid来实现。

不知道MSSQL内部是怎么实现的,总之相当慢,我机子上一般光查询就用去140ms+(搜索数据2k+,数据总数12k+),服务器就200ms+至少了,记录数可以说已经很少了,真不知道那些几万数据的随机是怎么搞的,如果有哪位高人希望能指点下。

正好站点内用了lucene,想到它的索引一直是放内存的(不是整个索引,简化的),如果来guid下肯定快,因为它就两个字段一个doc:int+score:float

Lucene.Net version :2.9.2

我的实践是先用MatchAllDocsQuery来获取所有结果,然后linq随机计算得出所有ID然后扔给SQL,代码如下:

 
var query = new MyQuery();
query.WithAll();
var results=IndexConfig.RealTimeSearch.SearchIndex(query.Query);
results.Documents = results.Documents.OrderBy(d => Guid.NewGuid()).Take(25);

SQL查询:

 
select id,xx1,xx2 from table where id in (id1,id2,id3);//idN 就是刚才linq计算的结果。

本地测试结果大概在50ms左右,基本就是SQL查询的时间!



本文转自today4king博客园博客,原文链接:http://www.cnblogs.com/jinzhao/archive/2011/09/19/2181409.html,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
24天前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之数据查询
【数据库SQL server】关系数据库标准语言SQL之数据查询
44 0
|
24天前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之视图
【数据库SQL server】关系数据库标准语言SQL之视图
36 0
|
24天前
|
SQL 人工智能 算法
【数据库SQL server】传统运算符与专门运算符
【数据库SQL server】传统运算符与专门运算符
17 0
|
24天前
|
SQL 数据库 数据安全/隐私保护
【操作宝典】SQL巨擘:掌握SQL Server Management的终极秘籍!
【操作宝典】SQL巨擘:掌握SQL Server Management的终极秘籍!
36 0
|
27天前
|
SQL 流计算
Flink CDC 1.12版本引入了对SQL Server的支持
【1月更文挑战第26天】【1月更文挑战第124篇】Flink CDC 1.12版本引入了对SQL Server的支持
22 1
|
2月前
|
SQL 关系型数据库 MySQL
使用Flink CDC从SQL Server同步数据到MySQL
使用Flink CDC从SQL Server同步数据到MySQL
104 1
|
2天前
|
SQL 存储 数据安全/隐私保护
|
4天前
|
SQL 存储
SQL Server基本函数
SQL Server基本函数
|
24天前
|
SQL 存储 数据库
【数据库SQL server】自学终极笔记
【数据库SQL server】自学终极笔记
73 0
|
24天前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之数据更新
【数据库SQL server】关系数据库标准语言SQL之数据更新
21 0

相关产品

  • 云迁移中心