Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 用于输出格式设置的数据库与前端_Sql_Mysql_Sql Server_Database_Oracle - Fatal编程技术网

Sql 用于输出格式设置的数据库与前端

Sql 用于输出格式设置的数据库与前端,sql,mysql,sql-server,database,oracle,Sql,Mysql,Sql Server,Database,Oracle,我已经读到,PHP在算术和字符串操作方面通常比MySQL快。在这种情况下,要求数据库做什么与web服务器做什么之间的界限在哪里?我们专门使用存储过程作为数据访问层。我的不成文规则一直是将输出格式(包括字符串操作和算术)留给web服务器。因此,我们的查询返回: 无格式日期 空值 无计算值(即返回“foo”和“bar”列的值,如果需要显示值foobar,则让web服务器计算foo*bar) 没有子字符串缩减字段(除非缩短的字段非常短,我们希望在数据库级别这样做以减少结果集大小) 两个独立的列,用于

我已经读到,PHP在算术和字符串操作方面通常比MySQL快。在这种情况下,要求数据库做什么与web服务器做什么之间的界限在哪里?我们专门使用存储过程作为数据访问层。我的不成文规则一直是将输出格式(包括字符串操作和算术)留给web服务器。因此,我们的查询返回:

  • 无格式日期
  • 空值
  • 无计算值(即返回“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的角度来看),从而降低执行计划缓存的效益