我正在处理一个表并经常调用mysql数据库,就像在forloop中一样
首先,我的MYSQL表是太过于biGGGGGG
我正在打电话
for ($i=0; $i < count($pages); $i++) {
array_push($views, $this->get_page_views($domain, $pages[$i]));
} // get_page_views is a function where i select data from table accourding to page
我想我不应该那么多地打电话给数据库,或者我应该使用
//selecting all rows and coloumns and then i should process them through php
//select * from page views
//and process them independently
我的问题是哪个最好
答案 0 :(得分:2)
目前还不清楚你的代码究竟在做什么,但如果你的循环在每次迭代中都打开了一个新的连接,那真的效率很低。您的客户端代码应该被编写以最小化它需要访问数据库的次数,并且如果它需要在很短的时间内进行大量查询,它应该打开连接,进行查询,然后关闭连接。
据猜测,从有限的信息开始,您甚至可以在一个查询中执行此操作,这甚至更好。通常,对每次迭代进行查询的循环表示某些内容需要重构为单个查询。
我非常怀疑你的MySQL表格是#34;太oo o bi biGGGGGG&#34;。如果你在正确的领域得到了正确的索引,它应该能够舒适地处理数千万行。如果它表现不佳,那么下列之一很可能是真的:
答案 1 :(得分:1)
当要处理的表已知或静态时,在循环中建立连接和关闭并不是一个好主意。
在这种情况下,您可以运行一次查询并将结果存储在数组(如果是php)或ResultSet(如果它是Java)中,或者您可以使用HashMap或Dictionary等集合并处理它们。 / p>
我们的想法是先将结果缓存,以提高性能。