gpt4 book ai didi

mysql - Mysql可以缓存对具有相同参数的相同函数的调用吗

转载 作者:行者123 更新时间:2023-11-29 02:20:25 25 4
gpt4 key购买 nike

比如我有这个情况

WHERE f1=CONCAT(v1,v2) OR f2=CONCAT(v1,v2) -- /*...

其中 v1,v1 是静态的,那么 Mysql 必须在第一次调用后缓存 concat 的结果。如果 v1 是字段,则 Mysql 必须在第一次调用后缓存 concat 的结果,但仅限于当前行。

那么,Mysql 是这样做的吗?

最佳答案

不,MySQL 不缓存函数调用。

此外,这样的优化不值得做。注意细微差别:

mysql> SELECT city, country, CONCAT(city, country) FROM cities LIMIT 263000,5
+----------+---------+-----------------------+
| city | country | CONCAT(city, country) |
+----------+---------+-----------------------+
| Kitanzi | cg | Kitanzicg |
| Masend | cg | Masendcg |
| Chilute | ao | Chiluteao |
| Khilule | ao | Khiluleao |
| Tchibuti | ao | Tchibutiao |
+----------+---------+-----------------------+
5 rows in set (0.10 sec)

mysql> SELECT city, country FROM cities LIMIT 263000, 5;
+----------+---------+
| city | country |
+----------+---------+
| Kitanzi | cg |
| Masend | cg |
| Chilute | ao |
| Khilule | ao |
| Tchibuti | ao |
+----------+---------+
5 rows in set (0.09 sec)

获取行的成本比表达式中的任何函数调用都高。

但是,您可以使用@variables 自己进行缓存。同样,您不会获得太多速度(如果有的话)。 (但是,您的代码可能会变得简单。)

关于mysql - Mysql可以缓存对具有相同参数的相同函数的调用吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32800131/

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