Sql 用于输出格式设置的数据库与前端
我已经读到,PHP在算术和字符串操作方面通常比MySQL快。在这种情况下,要求数据库做什么与web服务器做什么之间的界限在哪里?我们专门使用存储过程作为数据访问层。我的不成文规则一直是将输出格式(包括字符串操作和算术)留给web服务器。因此,我们的查询返回:Sql 用于输出格式设置的数据库与前端,sql,mysql,sql-server,database,oracle,Sql,Mysql,Sql Server,Database,Oracle,我已经读到,PHP在算术和字符串操作方面通常比MySQL快。在这种情况下,要求数据库做什么与web服务器做什么之间的界限在哪里?我们专门使用存储过程作为数据访问层。我的不成文规则一直是将输出格式(包括字符串操作和算术)留给web服务器。因此,我们的查询返回: 无格式日期 空值 无计算值(即返回“foo”和“bar”列的值,如果需要显示值foobar,则让web服务器计算foo*bar) 没有子字符串缩减字段(除非缩短的字段非常短,我们希望在数据库级别这样做以减少结果集大小) 两个独立的列,用于
- 无格式日期
- 空值
- 无计算值(即返回“foo”和“bar”列的值,如果需要显示值foobar,则让web服务器计算foo*bar)
- 没有子字符串缩减字段(除非缩短的字段非常短,我们希望在数据库级别这样做以减少结果集大小)
- 两个独立的列,用于根据需要使前端case输出
注意:我有意将这个问题标记为dbms不可知,因为我相信这是一个体系结构考虑,无论您的特定dbms如何,都会发挥作用。通常,数据格式化最好在客户端完成,尤其是特定于区域性的格式化 动态数据透视(即变量列)也是在客户端做得更好的一个例子 当涉及到字符串操作和动态数组时,
PHP
比我所知道的任何RDBMS
都强大得多
但是,数据格式化可以使用也保存在数据库中的其他数据。像这样,每行的颜色信息可以存储在附加表中
然后,您应该将颜色对应到数据库端的每一行,但将其包装到PHP
端的标记中
经验法则是:在尽可能少的数据库往返中检索格式化所需的所有内容,然后在客户端自行进行格式化。通常,数据格式化最好在客户端进行,尤其是特定于区域性的格式化 动态数据透视(即变量列)也是在客户端做得更好的一个例子 当涉及到字符串操作和动态数组时,
PHP
比我所知道的任何RDBMS
都强大得多
但是,数据格式化可以使用也保存在数据库中的其他数据。像这样,每行的颜色信息可以存储在附加表中
然后,您应该将颜色对应到数据库端的每一行,但将其包装到PHP
端的标记中
经验法则是:在尽可能少的数据库往返中检索格式化所需的所有内容,然后在客户端自行进行格式化。我将确定某些层如何在其他实现中旋转到位。很可能您永远不会使用不同的RDBMS,也不会有移动版本的站点,但您永远不会知道 数据点越正交,就越接近以这种形式从数据库中释放出来。如果在站点的每个理论版本上,您的值A和B都呈现为A*B,则数据库应将其返回为A*B,并且永远不会计算客户端 比如说,你有一些格式很重的东西,比如约会。有时你有短约会,长约会,英语约会。。。应该从数据库返回一个纯表单,然后用PHP格式化
所以正交点的作用也是相反的。数据点的表示/显示越动态,客户端处理的数据就越多。如果字符串a始终作为前六个字符的子字符串,则将其作为预子字符串从数据库中返回。如果子字符串的长度取决于某些因素,例如移动应用程序为6,web应用程序为10,然后从数据库返回较大的字符串,并在运行时使用PHP对其进行格式化。我将画出一条线,说明某些层如何在其他实现中旋转到位。很可能您永远不会使用不同的RDBMS,也不会有移动版本的站点,但您永远不会知道 数据点越正交,就越接近以这种形式从数据库中释放出来。如果在站点的每个理论版本上,您的值A和B都呈现为A*B,则数据库应将其返回为A*B,并且永远不会计算客户端 比如说,你有一些格式很重的东西,比如约会。有时你有短约会,长约会,英语约会。。。应该从数据库返回一个纯表单,然后用PHP格式化
所以正交点的作用也是相反的。数据点的表示/显示越动态,客户端处理的数据就越多。如果字符串a始终作为前六个字符的子字符串,则将其作为预子字符串从数据库中返回。如果子字符串的长度取决于某些因素,例如移动应用程序为6,web应用程序为10,然后从数据库返回较大的字符串,并在运行时使用PHP对其进行格式化。我认为返回的数据与从数据库返回的数据基本相同,并让其在前端格式化。我并不是死死地坚持使用它,但总的来说,我认为它更好,因为它提供了更大的灵活性—例如,1个存储过程可以满足n个不同的数据需求,每个存储过程都可以根据每个人的需要格式化数据。否则,您可能会导致多个查询返回与数据库格式略有不同的相同数据(从SQL Server的角度来看),从而降低执行计划缓存的效益