gpt4 book ai didi

mysql - 这个查询可以在不重组表的情况下优化吗?

转载 作者:行者123 更新时间:2023-11-29 05:03:26 27 4
gpt4 key购买 nike

SELECT * FROM products WHERE
serial LIKE '{$ssz}' //exact match, no other serials in row
OR serial LIKE '%,{$ssz}' //match at list end
OR serial LIKE '%,{$ssz},%' //match between other two serials
OR serial LIKE '{$ssz},%' //match at list beginning

这是我完美运行的查询,其中 {$ssz} 是要搜索的 PHP 变量。serial TEXT 列包含序列号列表,以逗号分隔。

序列号是唯一的,但长度可变,因此“AAB001”和“AB001”是可能的。

也许使用正则表达式会更快?还是采用完全不同的方法?

最佳答案

您可以将其缩短为:

SELECT p.*
FROM products p
WHERE FIND_IN_SET('{$ssz}', serial) > 0;

这看起来更好看,也更容易编码。但它并没有快得多。

问题是什么? 您的数据模型是问题所在。您不应该将事物列表存储在带分隔符的字符串中。 SQL 有这种存储列表的好方法。它被称为而不是字符串。

您的数据需要一个连接/关联表。然后您可以使用适当的索引加快查询速度。

关于mysql - 这个查询可以在不重组表的情况下优化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53303609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com