我只针对你这个做优化吧。。
第一个不要用select 这样的sql语句,你需要什么字段就写哪些字段
都需要的话,你都写出来,select 效率很低的。。
第二个如果说你的后台中对这些数据的变动不是很频繁
然后你可以将查询结果存入memcahe中
我写一段伪代码
$mem_key="all";
$res = $memcache->get($mem_key);
//如果没有存入memcache中
if (empty($res){
//sql语句可以用left jion on关联查询
$aaa="select b字段1,b字段2from btb as b left jion tb as bid=tid";
$bb=$mysql->_query($aaa);
while(!!$_rows=$mysql->_fetch_array_list($bb)){
//do something
$res
}
//结果存入memecahed中
$memcache->set($mem_key,$res,0,超时时间);
}
$res就是你获取的结果。。
你这段代码基本可以这样。。
SQLSERVER限制用户频繁访问设置方法:
1、首先进入数据库级别的安全性、登录名、新建登录名。
2、在常规选项卡中,如下图所示,创建登陆名,并设置默认的数据库。
3、在用户映射选项卡中,勾选需要设置的数据库,并设置架构,点击确认按钮,完成创建用户的 *** 作。
4、现在就可以对TESLOG数据库中的USER表进行权限的设置了表、属性。
5、在权限选项卡中,依此点击添加、浏览、选择对象。
6、在上面点击确认后,就可以下面的列表中找到对应的权限,如果你还想细化到列的权限的话,右下角还有一个列权限的按钮可以进行设置,点击确认按钮就完成了这些权限的设置了。
7、现在就使用TESUSER用户登陆数据库了,现在只能看到一个表了。
数据库连接池的连接被用光了,自然就不能连接了
可以加大最大连接数,还就没了连接用完了要及时关闭,以免占着坑不拉屎,
想那些sql语句复杂的最好简化以减少查询的时间,寻找别的解决方法
把数据读取到 DataSet里面,每次分页显示显示的时候,只从DataSet读取10条或者20条数据(自己定义每次读取多少条数据,记录读取数据的行号,SQL里面的 row_number()就是行号),这样就会减少数据库访问次数~~~~
DataSet是存在于内存中的数据库,是断开式的数据库,即使数据库连接关闭了,DataSet的数据任然存在~~~
只是第一次需要把所有数据读取出来,这可能会有点耗时~~~
1、使用缓存技术如redis
2、数据表经常检查,更新,修复
3、优化sql语句,而别是查询语句
4、当只要一行数据时使用 LIMIT 1
5、为搜索字段建立索引,这样查询速度更快
6、在Join表的时候使用相当类型的例,并将其索引
7、避免 SELECT 这种查询方法,用什么数据取什么数据,这属于sql优化
8、永远为每张表设置一个ID ,并作为主键
9、使用 ENUM 而不是 VARCHAR
10、从 PROCEDURE ANALYSE() 取得建议,PROCEDURE ANALYSE() 会让 MySQL 帮你去分析你的字段和其实际的数据,并会给你一些有用的建议
11、尽可能的使用 NOT NULL
关闭高频数据访问需要根据具体的应用场景进行 *** 作,有以下几种方式:
1 增加数据访问间隔时间:如果高频数据访问是由于程序中访问数据的时间间隔太短导致的,可以通过增加访问间隔时间的方式减少高频数据访问。
2 优化查询条件:如果高频数据访问是因为查询条件不合理导致的,可以优化查询条件,缩小查询范围,减少查询的数据量。
3 数据缓存:如果高频数据访问是因为需要频繁访问某些数据,可以考虑使用数据缓存的方式,将常用的数据缓存到内存中,减少对数据库的访问。
4 关闭不必要的任务:如果高频数据访问是由于某些不必要的任务导致的,可以关闭这些任务,避免对系统资源的过度占用。
5 增加硬件资源:如果以上所有方式都无法解决高频数据访问的问题,可以考虑增加硬件资源,例如增加服务器的内存、CPU等,提高系统的处理能力。
以上就是关于PHP多次访问数据库,是否有优化方案全部的内容,包括:PHP多次访问数据库,是否有优化方案、sqlserver限制用户频繁访问、tomcat 数据库连接池 查询过于频繁时导致 数据库连接失败!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)