如果纯粹看您给的例子,那返回的都是单一数值,区别是单纯遍历语句结果,前者是通过函数。我想您是想通过这个例子来问,如何提高函数在QUERY中的效率问题,因为你例子本身没有实际应用价值,只可能是你为解决问题的实验了。不知是否正确。
因为不知道你的具体工作情况,我只能提供多种可能,有的方法也许受权限,和你工作的内容限制,无法实现。我个人经验来看。
1. 尽量把函数放在你Login的schema下,对权限的检测,如果是自身的schema会提高速度。
2. 如果是你要生成report,你看看有没有可能,或者权限,生成Materialized view, 而不直接在他的Table或者View里面找。 Materialized View的方法有时候在数据仓库中会用来提高速度,当然 前提是你有这个权限。
3.就这个语句来看,我个人觉得没有必要从索引来找。你对自己的数据肯定比我们要熟悉的多,过多的索引反而会是速度变慢。觉得要么从表,要么从函数去入手。祝好运
这个取决于你SQL的where条件之后会有多少条数据。即便你函数里紧紧只是返回参数本身,但毕竟函数被调用执行的时间不可忽略。举例如果你搜到结果是1000条,那么这个函数就要被打开执行1000次,肯定会影响效率。加上业务表本身数据量如果大,又没索引的帮助,这个吞吐量是很吓人的。
你是如何做对比的?
一般不会出现这种情况,请详细介绍一下具体情况