mysql - MySQL 上的 LIKE 查询有多慢? (自定义字段相关)

标签 mysql custom-fields

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

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

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

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

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

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

(除了用户输入相关问题)如果我想在这种情况下获取塑料制成的元素,是否实用?比如说那会多慢?

谢谢。

编辑:我很担心这一点,因为实际上这个东西在发布时一张表的行数将约为 40 万行,谢谢大家。

最佳答案

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

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

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

关于mysql - MySQL 上的 LIKE 查询有多慢? (自定义字段相关),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14037533/

相关文章:

mysql - 使用交易数据库使用 R 或 SQL 计算某个项目出现在未来交易中的概率

php - 更正返回多行的 MySQL 语法

php - 在 Woocommerce 的单个产品页面中添加产品备注字段

php - 在单个产品页面中显示 SKU 下的自定义字段值

Django:如何将自定义字段序列化为 fixture 并将其加载回来

MySQL - 查找具有相同列但匹配某些 ID 的行

php - 在 Laravel 中对 null 调用成员函数 roles()

mysql - 无法读取 Node JS 中未定义的属性 'name'

salesforce - 您可以在 Salesforce.com 中创建整数自定义字段吗?

php - Woocommerce 中基于产品数量生成结帐字段的 ACF 转发器