gpt4 book ai didi

mysql - 有没有更好的方法来编写这个查询

转载 作者:可可西里 更新时间:2023-11-01 07:02:34 24 4
gpt4 key购买 nike

我正在尝试搜索和更新以特定数字开头或落在某个范围内的记录。

我进行了一个查询,该查询在值以特定数字开头的情况下有效。我不知道如何使用范围来做到这一点。

例如,我想用“”更新 products_ean 中的以下值

255
201-230 ---> starts with 201,202,203 ...230
236
980-990 ---> starts with 980.981,982 ...990

我编写了以下有效的查询,但不确定它是否有效,尤其是当它必须搜索超过 10 万条记录时。它不适用于范围。

UPDATE products SET products_ean ="" 
where products_ean like "200%"
OR products_ean like "020%"
OR products_ean like "023%"
OR products_ean like "027%"
OR products_ean like "042%"
OR products_ean like "221%"
OR products_ean like "209%"
OR products_ean like "041%"
OR products_ean like "049%"
OR products_ean like "026%"
OR products_ean like "025%"
OR products_ean like "299%";

最佳答案

无论如何,这将是一次全表扫描,因此您可以在 products_ean 上使用一个函数,而不会损失性能。也就是说,您可以使查询更具可读性,但可能不会更快。但是,您仍然可以尝试它是否更快,取三个前导数字并比较这些:

UPDATE products SET products_ean = '' 
where left(products_ean,3) in ('200', '020', '027', ...);

如果您觉得它更具可读性,您甚至可以使用范围:

UPDATE products SET products_ean = '' 
where left(products_ean,3) = '255'
or left(products_ean,3) between '201' and '230'
...

关于mysql - 有没有更好的方法来编写这个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26970801/

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