您可以使用 CREATE FUNCTION 语句来创建 UDR。然后,您可以使用例程修饰符来更改在该语句中指定的开销或选择性。
创建 UDR 之后,您可以将它放在 SQL 语句中。
SELECT * FROM image WHERE get_x1(image.im2) and get_x2(image.im1)
如果没有其他信息,优化器无法精确估计执行 UDR 的成本。您可以向优化器提供函数的成本和选择性。数据库服务器将成本和选择性一起使用,以确定最佳路径。 有关选择性的更多信息,请参阅使用用户定义的例程的过滤器。
在前面的示例中,优化器无法确定首先执行哪个函数,是先执行 get_x1 函数,还是 get_x2 函数。如果函数执行成本太高,那么 DBA 可以为函数分配较高的成本或选择性,这可以影响优化器更改查询计划以获取更好的性能。在前面的例子中,如果 get_x1 的执行成本更高,DBA 可以为该函数分配更高的成本,这会使得 优化器首先执行 get_x2 函数。
有关开销或选择性修饰符的更多信息,请参阅 GBase 8s 用户定义的例程与数据类型开发者指南。