gpt4 book ai didi

mysql - mysql中使用伪递归函数优化查询

转载 作者:行者123 更新时间:2023-11-29 22:15:57 24 4
gpt4 key购买 nike

我想知道如何优化其中包含函数的查询。具体来说,取

select all_couples.*,
getCoauth(PersA, PersB, Prio_year) as PastCoauth
from all_couples

函数是

CREATE DEFINER=`root`@`localhost` FUNCTION `getCoauth`(pA INT(11), pB INT(11), y YEAR(4)) RETURNS int(11)
BEGIN

RETURN (
select count(*)
from all_couples as d
where PersA=pA
and PersB=pB
and Prio_year < y
);

END

我正在处理的表格如下

Appln_id int(11) 
PersA int(11), index PersA
PersB int(11), index PersB
Prio_year year(4), index Year

该表有 10.000.000 行。生成选择需要一个多小时。如果我运行解释,我会发现它没有在查询中使用键,但它在函数内正确执行。我想知道问题是否在于,使用像我这样的函数,对主查询中选择的每一行在整个表上进行了相同的选择。

对于优化这样的事情有什么建议或引用吗?

最佳答案

INDEX(PersA, PersB, Prio_year)

这是一个复合索引。它与您所拥有的(3 个单独的索引)不同。在您提供的示例代码中它会工作得更好。

关于mysql - mysql中使用伪递归函数优化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31208908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com