![]() |
1
7
您将发现,在查询中使用函数对性能是一场灾难。这些函数会成为优化器的黑匣子,因此,当您在表中找到大量行时,您最终会将函数调用重新编码回查询中,以使其快速运行。 处理常见计算的更好方法是使用触发器将它们插入到新列中,或插入/更新查询中。这样,你就可以对计算出的值进行索引,并直接使用它,而不是在每次需要时计算出来。 |
![]() |
2
3
在代码重用方面,Sql并没有给你太多的灵活性。当涉及到计算或其他不涉及修改表格的任务时,我通常会创建函数。但是所有涉及到写表之类的任务,我通常使用存储过程来更好地控制事务。 |
![]() |
3
1
您可以将代码分解为单独的存储过程,以帮助将复杂的存储过程分解为更易于管理的块。你也可以做同样的事情来打破在函数中不起作用的常见逻辑。把它想象成一种类似于提取方法重构的方法。 |
![]() |
4
0
从应用程序的角度来看,另一种方法是使用绑定重用SQL查询。但这可能不是你想要的 |
![]() |
5
0
接下来,我确实遇到了一些性能问题,而且优化器似乎无法为函数中的代码选择正确的索引。 因此,我必须使用索引提示(带有关键字)指定正确的索引,以解决性能问题。 |
![]() |
Community wiki · SQL语法新手 1 年前 |
![]() |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
![]() |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
![]() |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |