0

表:字段1,字段2

给定偏移量 & len 我希望结果是:

select substr(concat(field1,field2),offset,len) from table

由于 field1 和 field2 是大的 varchars 并且这个查询是一个瓶颈,我不想不断地将两个大字段连接在一起,而是宁愿做一些事情

select case when (offset+len) < length(field1) then substr(field1,offset,len) else....

有三种不同的情况:1) field1 的 substr,2) field2 的 substr 3) substr(field1) 与 substr(field2) 连接

有人有这个脑筋急转弯的解决方案吗?谢谢!

4

1 回答 1

0

MySQL 有一个IF函数可以使查询比 CASE 结构更清晰。

不管你怎么写,它都很贵。为什么不创建另一列(去冗余!)并在那里保存正确的值?如今,冗余不再是问题,它比任何类型的 concat、case 或 if 都快得多。

(如果offset不是静态的,这不是解决方案。如果offset是,但len不是,它仍然是一个解决方案。)

于 2011-04-16T22:28:22.710 回答