Sql 对于数据库中的字段大小,是否存在使用二次幂的性能原因?

Sql 对于数据库中的字段大小,是否存在使用二次幂的性能原因?,sql,database,optimization,Sql,Database,Optimization,很久以前,当我还是一个年轻的lat时,我曾经做过很多汇编和优化编程。今天,我主要发现自己在构建网络应用程序,这也没关系。。。。然而,每当我为数据库表创建字段时,我发现自己使用16、32和128等值作为文本字段,并尝试将布尔值组合到集合数据字段中 从长远来看,将文本字段的长度设置为9是否会使我的数据库速度变慢?我是否通过指定一个更易于内存对齐的字段长度来帮助它?数据库优化与机器代码优化完全不同。对于数据库,大多数情况下,您希望减少磁盘I/O,而浪费时间地尝试对齐字段只会使磁盘块/页中的记录更少。此

很久以前,当我还是一个年轻的lat时,我曾经做过很多汇编和优化编程。今天,我主要发现自己在构建网络应用程序,这也没关系。。。。然而,每当我为数据库表创建字段时,我发现自己使用16、32和128等值作为文本字段,并尝试将布尔值组合到集合数据字段中


从长远来看,将文本字段的长度设置为9是否会使我的数据库速度变慢?我是否通过指定一个更易于内存对齐的字段长度来帮助它?

数据库优化与机器代码优化完全不同。对于数据库,大多数情况下,您希望减少磁盘I/O,而浪费时间地尝试对齐字段只会使磁盘块/页中的记录更少。此外,如果任何对齐都是有益的,数据库引擎将自动为您执行

最重要的是索引以及如何使用它们。尝试在更少的空间中打包更多信息的技巧很容易导致很难获得好的索引。但是,不要做得过火;索引不仅减缓了索引列的插入和更新,还意味着计划人员的更多工作,必须考虑所有的可能性。


大多数数据库都有解释命令;尝试在您的选择中使用它,特别是那些具有多个表的选择,以了解数据库引擎将如何工作。

数据库优化与机器代码优化非常不同。对于数据库,大多数情况下,您希望减少磁盘I/O,而浪费时间地尝试对齐字段只会使磁盘块/页中的记录更少。此外,如果任何对齐都是有益的,数据库引擎将自动为您执行

最重要的是索引以及如何使用它们。尝试在更少的空间中打包更多信息的技巧很容易导致很难获得好的索引。但是,不要做得过火;索引不仅减缓了索引列的插入和更新,还意味着计划人员的更多工作,必须考虑所有的可能性。


大多数数据库都有解释命令;尝试在您的选择中使用它,尤其是那些具有多个表的选择,以了解数据库引擎将如何工作。

字段本身的大小可能很重要,但通常对于文本,如果使用nvarchar或varchar,这并不是什么大问题。因为DB会拿走你用的东西。以下内容将对您的SQL速度产生更大的影响:

没有比您需要的更多的列。以列为单位的表越大,意味着数据库在同一磁盘页上查找查询结果的可能性越小。请注意,即使您在select中只要求10列中的2列,这也是正确的。。。有一种方法可以解决这一问题,即使用聚集索引,但这只能解决一种有限的情况


您应该提供更多关于您正在考虑的设计问题/备选方案类型的详细信息,以获得更多提示。

字段本身的大小可能很重要,但通常对于文本,如果您使用nvarchar或varchar,这并不是什么大问题。因为DB会拿走你用的东西。以下内容将对您的SQL速度产生更大的影响:

没有比您需要的更多的列。以列为单位的表越大,意味着数据库在同一磁盘页上查找查询结果的可能性越小。请注意,即使您在select中只要求10列中的2列,这也是正确的。。。有一种方法可以解决这一问题,即使用聚集索引,但这只能解决一种有限的情况


您应该提供更多关于您正在考虑的设计问题/备选方案类型的详细信息,以获得更多提示。

上面暗示的内容,但可以明确说明。你没有任何办法知道计算机实际上在做什么。这不像过去那样,你可以看汇编程序,非常清楚地知道程序将采取什么步骤。看起来像是在CPU寄存器中的值实际上可能必须从芯片上的缓存甚至磁盘中获取。如果您不是在编写汇编程序,而是在使用优化编译器,或者更确切地说,在运行时引擎Java、C上使用字节码,那么放弃希望吧。或者放弃忧虑,这是更好的主意


写入或检索该DB值可能需要数千个或数万个机器周期。不要担心由于全单词对齐而增加的10个周期

上面暗示的东西,但可以明确表示出来。你没有任何办法知道计算机实际上在做什么。这不像过去那样,你可以看汇编程序,非常清楚地知道程序将采取什么步骤。看起来像是在CPU寄存器中的值实际上可能必须从芯片上的缓存甚至磁盘中获取。如果您不是在编写汇编程序,而是在编写usi 优化编译器,或者更确切地说,运行时引擎Java、C上的字节码放弃了希望。或者放弃忧虑,这是更好的主意


写入或检索该DB值可能需要数千个或数万个机器周期。不要担心由于全单词对齐而增加的10个周期

相关问题:相关问题:这意味着使用集合类型将布尔值组合到单个列中是个好主意…这意味着使用集合类型将布尔值组合到单个列中是个好主意。。。