gpt4 book ai didi

mysql - 如何调整以下 MySQL 查询?

转载 作者:行者123 更新时间:2023-11-29 04:54:25 25 4
gpt4 key购买 nike

我正在使用以下运行良好的 MySQL 查询,我的意思是给我所需的输出但是......让我们先看看查询:

select 
fl.file_ID,
length(fl.filedesc) as l,
case
when
fl.part_no is null
and l>60
then concat(fl.fileno,' ', left(fl.filedesc, 60),'...')
when
fl.part_no is null
and length(fl.filedesc)<=60
then concat(fl.fileno,' ',fl.filedesc)
when
fl.part_no is not null
and length(fl.filedesc)>60
then concat(fl.fileno,'(',fl.part_no,')', left(fl.filedesc, 60),'...')
when
fl.part_no is not null
and length(fl.filedesc)<=60
then concat(fl.fileno,'(',fl.part_no,')',fl.filedesc)
end as filedesc
from filelist fl

我不想重复使用 length 函数,因为我猜它会在每次声明性能问题时访问数据库。请建议我是否可以将长度存储一次并多次使用。

最佳答案

一旦您访问了给定的行,您对列所做的操作对性能的影响很小。因此,您猜测它更多地“访问数据库”以服务于重复使用该长度函数并不像您想象的那么糟糕。

我会使用的类比是邮政承运人将邮件运送到你家,它在城外数英里。他开车 20 分钟到您的邮箱,然后他担心一次将一封信插入您的邮箱会花费太多时间,而不是一次将所有信件插入。与长途驾驶相比,这种低效率的成本微不足道。

也就是说,您可以使查询更简洁或更易于编码或查看。但这可能不会对性能有很大好处。

select 
fl.file_ID,
concat(fl.fileno,
ifnull(concat('(',fl.part_no,')'), ' '),
left(fl.filedesc,60),
if(length(fl.filedesc)>60,'...','')
) as filedesc
from filelist fl

关于mysql - 如何调整以下 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8021364/

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