有这样的表table_20101101,table_20101102,table_20101103,.......
把它们放在数组里 $tableArr = array('table_20101101,','table_20101102,','table_20101103,',...);
如果这样写sql的话
$limit = 50;
$offset = ($page - 1) * $limit;
foreach ($tableArr as $table)
{
$sql .= "SELECT * FROM $table UNION ";
}
$sql = rtrim($sql, "UNION");
$sql .= "LIMIT $offset, $limit";
$res = $db->fetchAll($sql);这样写分页很简单;但是如果 我不UNION 联合查询如下方式写:foreach ($tableArr as $table)
{
$sql = "SELECT * FROM $table";
$res = array_merge($res,$db->fetchAll($sql));
......
}
那我分页怎么办呢?这样写可以提高些效率就是如果某次或某几次循环得到的结果满足分页数$limit
就可以退出循环。但是分页就很复杂了!每次循环过后都要计算下次循环的偏移量和限制条数。谁能搞定给高分!!
把它们放在数组里 $tableArr = array('table_20101101,','table_20101102,','table_20101103,',...);
如果这样写sql的话
$limit = 50;
$offset = ($page - 1) * $limit;
foreach ($tableArr as $table)
{
$sql .= "SELECT * FROM $table UNION ";
}
$sql = rtrim($sql, "UNION");
$sql .= "LIMIT $offset, $limit";
$res = $db->fetchAll($sql);这样写分页很简单;但是如果 我不UNION 联合查询如下方式写:foreach ($tableArr as $table)
{
$sql = "SELECT * FROM $table";
$res = array_merge($res,$db->fetchAll($sql));
......
}
那我分页怎么办呢?这样写可以提高些效率就是如果某次或某几次循环得到的结果满足分页数$limit
就可以退出循环。但是分页就很复杂了!每次循环过后都要计算下次循环的偏移量和限制条数。谁能搞定给高分!!
我倒是怀疑,你这个效率没问题吗?
我放在循环里就是为了按需查询,效率肯定比UNION。我用的是MySQL;merge引擎没搞过,研究一下!