首页 > 解决方案 > 从 SELECT 语句执行函数时,存储函数内的临时表是否会多次构建?

问题描述

假设我有一个函数可以创建一个我想用于SELECT查询的临时表。该函数是否有可能在语句中多次重建临时表SELECT?在这种情况下,最佳做法是什么?

CREATE FUNCTION getID(id INT)
RETURNS INT DETERMINISTIC
BEGIN
  -- build ID table
  CREATE TEMPORARY TABLE IF EXISTS tbl2(
    id int,
    val int
  );

  -- insert values into tbl2 here

  SET @id = NULL;

  SELECT tbl2.id INTO @id from tbl2 where id = tbl2.id;
  return @id;
END
SELECT getID(id)
FROM tbl
WHERE condition;

标签: mysqldatabase

解决方案


推荐阅读