0

抱歉,如果这是多余的,而且可能是这样,我看了看,但在这里找不到与我想知道的问题相符的问题。

基本上我们有一个大约有 50000 行的表,并且预计它会比这大得多。我们需要能够允许管理员用户根据其类别将自定义数据添加到项目中,并且用户可以选择他们想要添加信息的管理员定义的字段。

最初,我使用了 item_categories_fields 表,该表将 item_fields 和 item_categories 中的条目配对,因此管理员可以添加自定义字段并跨类别重复使用它们以保持一致性。item_fields 与 item_field_values 有关系,后者将值与字段联系起来,这就是我们在 .NET 中处理事情的方式。该项目使用的是 CAKEPHP,我们只是边学习边学习,所以有时会有点烦人。

然而,我正在考虑可能只是添加一个 item_custom_fields 表,该表本质上是 item_id 和一个存储 XMLish 格式数据的文本字段。这仅适用于自定义字段的值。

如果我想通过它的 id 获取项目没有问题,因为所需的数据存储在 items 表中,但是如果我想基于自定义字段进行搜索怎么办?会不会

SELECT * FROM item_custom_fields 
WHERE custom_data LIKE '%<material>Plastic</material>%'

(抛开用户输入相关的问题)如果我想在这种情况下获取塑料制成的物品,是否可行?就像那会有多慢?

谢谢。

编辑:我担心这一点实际上在启动时该表将有大约 400k 行,谢谢大家。

4

1 回答 1

1

任何LIKE以开头的查询%都不会使用列上的任何索引,因此查询将扫描整个表以查找结果。

响应时间很大程度上取决于您的机器和桌子的大小,但它绝对不会在任何形状或形式下都有效。

您以前/现有的解决方案(如果索引良好)应该快得多。

于 2012-12-26T07:57:26.363 回答