多种从数据库随机取一条或多条数据的方法,你都知道吗?
在一些WEB应用里面,经常需要从某个表中随机取一条或者多条数据,比如一个存储广告的信息表,我们需要在网站或应用的某个位置显示一条或几条随机的广告来进行显示,再如一个新闻详情里面,我们需要从新闻信息表里面随机取一条或几条相关的新闻显示在相关列表处,那么下面我们就来总结一下大家都是怎么样实现这个小功能的。
采用数据库的随机函数进行获取
但是该方案比较适合取一条记录的情况,很多数据库都自带了随机函数,比如mysql里面的rand函数、sql server里面的rand函数等都可以做到,但是使用这种方案的劣势是,无法利用索引,这样就可能遍历整个表,如果这样的需求多的话,就有可能成为瓶颈,于是产生了下面的用存储过程的方式来实现。
采用数据库的存储过程方式进行获取
经过上面的分析,知道了,因为使用随机函数动态进行计算导致无法利用索引,那么我们采用存储过程,首先将生成的随机数放在一个变量里面,然后在用另一个SQL语句查询数据表里面等于这个变量的值,这就能够充分利用索引提高性能了。但是这种解决方案,估计很多中小公司都会放弃,因为他们都很少用存储过程,而是将很多SQL语句直接放在了服务端程序,比如PHP、JAVA、ASP.NET、PYTHON、NODEJS等等,于是产生了下面第三种解决方案。
采用服务端程序生成随机数的方式进行获取
经过上面两种解决方案的分析,在服务端需要做的就是三个操作,一个就是获取相应表的总记录数,以方便生成随机数,一个就是生成随机数,一个就是利用随机数构造能够利用索引的SQL语句,然后执行SQL语句得到最终的结果,因为目前很多公司都是采用框架开发WEB应用,所以这种方案使用是比较多的。
不管怎么样,还是一句话,重在实践,下面是我们制作的一个自学编程不再是梦的PDF付费文档,欢迎购买使用。