【问题标题】:Multi Criteria Search Algorithm多标准搜索算法
【发布时间】:2009-08-25 15:58:29
【问题描述】:

问题是:我有一个巨大的(在我的水平上)mysql 数据库,其中包含技术产品。我的数据库中有 150k 行产品以及 10 到 20 个具有相同行数的其他表。每个表都包含很多标准。有些标准是文本值,有些是十进制的,有些只是布尔值。我想为这个数据库提供一个网络访问(php),每个标准都有过滤器,但我不知道如何快速做到这一点。我开始创建一个所有列合并以避免多重连接的大表,这很酷,比大连接快,但仍然非常慢。对所有标准进行索引,并不能改善事情(我听说这是个坏主意)。我想知道是否有一些很酷的算法可以帮助我预处理多条件搜索。任何想法 ?

先谢谢了。

【问题讨论】:

  • 数据库标准化可能有帮助?
  • 是 MySQL 数据库吗?

标签: database algorithm search criteria


【解决方案1】:

如果您对尝试在 SQL 中执行此操作感到沮丧,可以查看Lucene。它可以让您进行范围搜索、全文搜索等。

【讨论】:

    【解决方案2】:

    尝试全文搜索 您可能想尝试将您的文本字段组合在一起并执行full text search

    优化您的查询 对于其他列,按照您希望它们使用的频率对它们进行排序。 编写一个查询测试套件,并运行它们以了解性能。然后开始添加索引,看看它如何影响性能。在性能变得更好的同时继续添加索引。当情况恶化时停止。

    使用解释计划 由于您没有提供您的 SQL 或表格布局,我不能更具体。但是使用Explain Plan 命令来确保您的查询命中索引,而不是进行表扫描。这可能很棘手,因为查询中列的顺序等细微的东西会影响索引是否有效。

    【讨论】:

    • 感谢您的回答。我尝试了很多关于查询优化的事情,但我开始认为直接使用我的过滤器查询表不是解决方案的一部分。我的意思是,我的 sql 查询看起来真的很重,很多条件,很多标准。还进行全文搜索意味着您知道要查找的值,但我正在使用过滤器:条件是范围内的值,而不是确切的值。顺便说一句,我的产品是机械精密物品(齿轮、螺钉、螺栓等)。
    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    相关资源
    最近更新 更多