最近项目很忙,分给我的功能都比较复杂,还好能应付的下来。在工作的过程中,我发现使用mysql的自带函数能够极大的减少程序的复杂度。这是必然的,使用mysql的函数,能够在程序里面省却很多的循环遍历。但是网上有的专家说,在mysql里面使用数学以及字符串函数,会使得mysql的效率变慢,我想这是必然的。把本来是程序应该干的事情交给了mysql去干,mysql干的越多,那么效率就越低。
那么有没有可能找到一个平衡呢?不建议,因为有大神说mysql的函数效率低,就不使用。如果这样子的话,那么干脆连mysql数据库也不要使用了吧,比mysql成熟的数据库一抓一大把。但是为什么还要使用mysql呢?免费呀(现在不免费了),既要使用mysql的优点,也要尽量避免mysql效率低的坑。也就是在做系统的使用,要问清楚这个软件的运用范围。
如果是内部系统,都知道内部系统通常业务逻辑非常复杂,功能非常细致,但是访问量比较小,也就是并发量比较小。外部系统可能也许逻辑上没有内部系统这么复杂,但是访问量比较多,并发比较大。如果是访问量比较小的软件,就可以在系统里尽可能的使用mysql的自带函数,充分降低的程序的复杂度,也利于维护。如果是访问量大的程序就要尽可能的将计算好资源的逻辑放在程序里面跑,尽可能将服务端非机密的计算放在用户端去跑。让客户端负责计算,让程序段负责逻辑,让DB端只负责数据的存储。各司其职,各用所长。
总之不能因噎废食,不能因为别人的一句话,正好顺应了自己不想学习的懒惰之心。
mysql数学函数走起,先写一部分,以后慢慢补充。
1、format(x,y) 函数,功能是将一个数字x,保留y位小数,并且整数部分用逗号分隔千分位,小数部分进行四舍五入。
需要注意的是,一旦你的数据经过千分位分隔后,就会变成字符串。能够给阅读上提供比较好的体验,但是在计算上却造成很大的困扰,所以如果只是保留小数,不建议使用这个函数。
2、abs(); 求一个数的绝对值;absolute
3、sqrt();求一个数的平方根。sqrt是sqruar(平方,矩形) ,root(根)的缩写。
4、mod(x,y) x除数,y被除数。结束是余数。
5、ceil() 进一取整。
floor()舍一取整
这两个函数是镜子函数,比较有点意思。这两个函数并不进行四舍五入,比较强硬。
6、rand() 顾名思义,是用来生成随机数用的。
7、format 会自动进行千分位,下面我们来看看round函数,进行四舍五入。
8、truncate(x,y) 比较霸道,不管四舍五入,直接把x,的y位小数直接干掉。
9、sign() 返回当前结果得符号,如果是负数返回-1,如果是0 返回0 如果是正数,返回1.
10、power() 幂运算