• 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查询的时间!

  • 相关阅读:
    QString 与 string转换
    Lua 判断表是否为空方法
    QT 继承QWidget && 继承QDialog
    QNetworkAccessManager
    Lua语言特色
    Lua逻辑操作符
    Lua语言总结
    Lua 函数
    Lua数据类型
    QT 通过QNetworkReply *获取对应请求的URL地址
  • 原文地址:https://www.cnblogs.com/jinzhao/p/2181409.html
Copyright © 2020-2023  润新知