2009-10-08 69 views

回答

0

因为它们被解释而不是编译成机器/ CPU指令。

1

字符串比较并不比任何已编译的程序慢,但通常比较很多很多字符串(比如表中的每一行),而且速度很慢。

至于循环:数据库不是编译器。它读取你的SQL然后解释它。如果您可以发送编译后的代码并让数据库执行它,则您不会注意到速度差异,但数据库必须一次又一次解释相同的代码。

如果幸运的话,数据库会将一个循环转换为内部形式(字节代码或数据结构),但a)需要更多的时间,而不仅仅是将CPU指向某些代码,以及b)仍然需要运行更多的代码来解释字节码或数据结构。对于循环,它必须评估每一轮的条件。

1

关系数据库经过优化,可以集中处理。任何需要数据库逐行工作的游标或循环或相关子查询都会比较慢,通常很痛苦。用基于代码的代码(数据库被设计为最好处理的类型)代替代码通常会将性能从几小时提高到几毫秒。