优化的数据库搜索算法

optimized data base search algorithm

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

假设我们有 table 辆汽车(carID、型号、制造商、变速器、fuleType、其他选项)

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

我当然可以在所有字段上使用 like 子句进行查询,这种方法正确吗?什么时候可能有数千条记录?

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

我最熟悉 .Net,但如果您给我任何其他建议并指导我完成起点(库、现有开源项目),我将很高兴。

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

这是我会做的。

使用 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 数据库和静态文档来实现更快的响应,但是对于数千条记录,数据库应该可以正常工作。