Mysql自定义函数执行时间与不封装时执行时间差别很大,求解

onemetre 2017-05-09 09:17:03
使用自定义函数封装Find_In_Set与直接使用Find_In_Set函数时,执行时间很大,求解
SELECT
*
FROM
(
SELECT
PO_PUBLICOPINION.SYSID,
PO_PUBLICOPINION.OPINION_ID,
GSD_AREA,
(
SELECT
group_concat(FULLNAME)
FROM
SYS_APP_REGION
WHERE
InOperat (
REGIONCODE,
PO_PUBLICOPINION.GSD_AREA
)>0

) AS NBDCV$GSD_AREA ,
PO_PUBLICOPINION.REPRINTCOUNT
FROM
PO_PUBLICOPINION
) BASETABLE


执行时间35S
------------------------------------------

SELECT
*
FROM
(
SELECT
PO_PUBLICOPINION.SYSID,
PO_PUBLICOPINION.OPINION_ID,
GSD_AREA,
(
SELECT
group_concat(FULLNAME)
FROM
SYS_APP_REGION
WHERE
FIND_IN_SET(regioncode,po_publicopinion.gsd_area)>0

) AS NBDCV$GSD_AREA ,
PO_PUBLICOPINION.REPRINTCOUNT
FROM
PO_PUBLICOPINION
) BASETABLE

执行时间1.274s
-----------------------------------------------
InOperat函数如下


BEGIN
declare idx int(10);
set idx = FIND_IN_SET(v_substr,v_parentstr);
return idx;
end;

...全文
302 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
onemetre 2017-05-10
  • 打赏
  • 举报
回复
引用 2 楼 ACMAIN_CHM 的回复:
自己写的 存储函数 需要额外的开销。
存储过程是有消耗,但差别太大,不太理解mysql的内部处理机制, 不用FIND_IN_SET,直接return1;消耗时间也较大。 因为这种函数执行结果在其他数据库oracle、sqlserver上测试没有出现过时间消耗大的问题。 注: mysql5.7
ACMAIN_CHM 2017-05-10
  • 打赏
  • 举报
回复
自己写的 存储函数 需要额外的开销。
zjcxc 2017-05-09
  • 打赏
  • 举报
回复
内置的调用的环节少,应该还有优化吧 不过效率确实相差太大了

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧