zoukankan      html  css  js  c++  java
  • 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查询的时间!

  • 相关阅读:
    canvas背景粒子动态变化动画
    点击屏幕弹出心形效果
    前端图片的性能优化
    vue的computed和method的区别
    es6的...
    命名路由和命名视图
    编程式路由
    [思维]蚂蚁感冒
    [模板]前缀树 / 字典树及应用
    [模板]三分搜索
  • 原文地址:https://www.cnblogs.com/jinzhao/p/2181409.html
Copyright © 2011-2022 走看看