PHP+Mysql全文索引分页
时间:2011-04-20
来源:互联网
我想问问大家全文索引的时候,怎么分页读取数据的,谢谢
求一个全文索引分页读取数据的代码,谢谢
我用到了两种方法
方法1
方法2
两种方法我都循环一万次执行,如果mysql比较空间的时候,方法1的时间短点,而2的时间一直都是很稳定
如果mysql比较忙的时候,那么方法1花的时间就有点长,不过2还是一样稳定
第一次访问1慢,2快
再次访问的时候就是1快了,2还是很稳定
谢谢
我想问问大家全文索引的时候,怎么分页读取数据的,谢谢
谢谢
[ 本帖最后由 mjoshua 于 2011-4-20 11:04 编辑 ]
求一个全文索引分页读取数据的代码,谢谢
我用到了两种方法
方法1
复制内容到剪贴板
$page=1;
$result=mysql_query("SELECT count(id) FROM article where MATCH (title) AGAINST ('$search')");
$row=mysql_fetch_row($result);
mysql_free_result($result);
$pagecount=ceil($row[0]/$PageSize);
$offset=$PageSize*($page - 1);
$result=mysql_query("SELECT * FROM article where MATCH (title) AGAINST ('$search') limit $offset,$PageSize");
while($rs=mysql_fetch_object($result))
{
//echo $rs->id;
}
方法1如果是用户第一次访问的时候,花的时间就比较长代码:
$PageSize = 20;$page=1;
$result=mysql_query("SELECT count(id) FROM article where MATCH (title) AGAINST ('$search')");
$row=mysql_fetch_row($result);
mysql_free_result($result);
$pagecount=ceil($row[0]/$PageSize);
$offset=$PageSize*($page - 1);
$result=mysql_query("SELECT * FROM article where MATCH (title) AGAINST ('$search') limit $offset,$PageSize");
while($rs=mysql_fetch_object($result))
{
//echo $rs->id;
}
方法2
复制内容到剪贴板
$page=1;
$i=0;
$PageSize = 20;
$pagecount=ceil(mysql_num_rows($result)/$PageSize);
$offset=$PageSize*($page - 1);
$break=$PageSize*$page-1;
$offset_end=$PageSize*$page;
$idspage='';
while($rs=mysql_fetch_array($result))
{
if($i>=$offset && $i<$offset_end)
{
$idspage.=$rs["id"].",";
}
if($i==$break)
{
break;
}
$i++;
}
$idspage=trim($idspage,",");
mysql_free_result($result);
$result=mysql_query("SELECT * FROM article where id in(".$idspage.") ORDER BY FIND_IN_SET(id, '".$idspage."')");
while($rs=mysql_fetch_object($result))
{
//echo $rs->id;
}
方法2的就很稳定,第一次访问的用户所花的时间就很少代码:
$result=mysql_query("SELECT id FROM article where MATCH (title) AGAINST ('$search') limit 100");$page=1;
$i=0;
$PageSize = 20;
$pagecount=ceil(mysql_num_rows($result)/$PageSize);
$offset=$PageSize*($page - 1);
$break=$PageSize*$page-1;
$offset_end=$PageSize*$page;
$idspage='';
while($rs=mysql_fetch_array($result))
{
if($i>=$offset && $i<$offset_end)
{
$idspage.=$rs["id"].",";
}
if($i==$break)
{
break;
}
$i++;
}
$idspage=trim($idspage,",");
mysql_free_result($result);
$result=mysql_query("SELECT * FROM article where id in(".$idspage.") ORDER BY FIND_IN_SET(id, '".$idspage."')");
while($rs=mysql_fetch_object($result))
{
//echo $rs->id;
}
两种方法我都循环一万次执行,如果mysql比较空间的时候,方法1的时间短点,而2的时间一直都是很稳定
如果mysql比较忙的时候,那么方法1花的时间就有点长,不过2还是一样稳定
第一次访问1慢,2快
再次访问的时候就是1快了,2还是很稳定
谢谢
我想问问大家全文索引的时候,怎么分页读取数据的,谢谢
谢谢
[ 本帖最后由 mjoshua 于 2011-4-20 11:04 编辑 ]
作者: mjoshua 发布时间: 2011-04-20
全文索引的时候不管你采取什么办法,只要数据库一大开销肯定也很大,所以这时候需要缓存机制。
一般类似搜索引擎的话,会采用SQL读取数据,然后缓存到XML,这样当用户在搜索的时候直接对XML操作
一般类似搜索引擎的话,会采用SQL读取数据,然后缓存到XML,这样当用户在搜索的时候直接对XML操作
作者: ylw1230 发布时间: 2011-04-20
较少用数据库内置的全文索引功能。。我一般采用sphinx这样的服务来支撑。
作者: 112183883 发布时间: 2011-04-20
引用:
原帖由 ylw1230 于 2011-4-20 11:13 发表全文索引的时候不管你采取什么办法,只要数据库一大开销肯定也很大,所以这时候需要缓存机制。
一般类似搜索引擎的话,会采用SQL读取数据,然后缓存到XML,这样当用户在搜索的时候直接对XML操作
有这类的文章吗?具体怎么做的?
谢谢
作者: mjoshua 发布时间: 2011-04-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28