1

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

提前谢谢。

4

2 回答 2

1

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

于 2009-08-26T13:20:42.640 回答
0

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

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

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

于 2009-08-25T16:20:42.713 回答