道歉,如果这是多余的,可能是,我看了一眼,但在这里找不到我想知道的问题。
基本上我们有一个约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行,谢谢你们。
答案 0 :(得分:1)
以LIKE
开头的任何%
查询都不会使用列上的任何索引,因此查询将扫描整个表以查找结果。
对此的响应时间在很大程度上取决于您的机器和工作台的大小,但它绝对不会以任何形式或形式提供效率。
您之前/现有的解决方案(如果已编入索引)应该会快得多。