优化的数据库搜索算法

时间:2017-06-05 21:24:36

标签: asp.net database algorithm real-time

我正在使用api开发一个可以从移动客户端访问的网站,该应用类似于http://zomato.com/

假设我们有桌车(carID,型号,制造商,传输,fuleType,其他选项)

用户可以查询任何字段,查询也可能包含其他表中的字段,例如,如果我为制造商和模型创建单独的表。

当然我可以在所有字段上使用like子句查询,这是正确的方法吗?何时可能有数千条记录?

使用移动应用程序或网站时,我需要快速的数据库响应实时查询。

我最熟悉.Net,但如果你给我任何其他建议并引导我完成起点(图书馆,现有的开源项目),我会很高兴。

注意:用户只有一个搜索字段和可选的过滤器,如模型,类别等......

1 个答案:

答案 0 :(得分:0)

这就是我要做的事。

使用IQueryable构建查询。您可以使用if语句检查任何参数是否具有值,如果是,则将where语句附加到查询中。一旦您的查询全部设置,请使用.ToList.AsEnumerable将其发送到内存。

public List<Data> Search (string param1, string param2)
{
    IQueryable<Data> query = db.SomeTable;

    if (!String.IsNullOrEmpty(param1))
        query = query.Where(m => m.Field1 == param1); // might use contain depending on your use case

    if (!String.IsNullOrEmpty(param2))
        query = query.Where(m => m.Field2 == param2);

    return query.ToList();
}

我还会使用SkipTake进行分页。

编辑:我想要注意,这与我所知道的数据库一样快,如果有其他人知道更快的功能,请告诉我。您可以通过使用NoSQL数据库和静态文档来实现更快的响应,但对于数千条记录,数据库应该可以正常工作。