age*_*ate 3 postgresql best-practices functions
我对如何做某事没有疑问,但我是否应该这样做。抱歉,如果有更合适的论坛。
我有一个功能:
CREATE OR REPLACE FUNCTION get_name(user_id UUID) RETURNS TEXT AS $$
SELECT username
FROM users
WHERE users.id=user_id
$$ LANGUAGE 'sql';
Run Code Online (Sandbox Code Playgroud)
我喜欢使用这个函数在其他查询中从 user_id 转换为用户名。这是一个常见的操作,我认为一个函数会加快开发时间,以查找一次性统计数据以进行数据分析。我不关心查询速度。这是使用函数来执行此操作的好习惯还是我应该只执行连接?
我对此很陌生,我的同事说将函数用于常规选择/连接可以执行的操作是不好的做法。他还提到,函数最好用于常规选择无法完成的事情。所以我想问其他人什么是好的做法?
编辑:如果这是一种不好的做法,那么对于函数执行稍微复杂一些的常见操作的情况是否更合理?
函数永远不会加速 SQL 已经完成的操作。事实上,如果你不实际添加IMMUTABLE
它,它很可能会减慢它的速度。
我个人永远不会写这样一个陈词滥调的函数。
但除此之外,这不仅仅是关于您功能的复杂性。您有一个 DSL,它显式查询您的模式,并且正是为此目的而创建的——即 SQL。当这些功能需要更多的逻辑和复杂性时,你会怎么做。在那里看到,下一步是函数中的 CASE 语句。然后,慢慢但肯定地重新创建动态查询生成机制。在需要时动态生成 SQL 更容易。
归档时间: |
|
查看次数: |
204 次 |
最近记录: |