gpt4 book ai didi

MySQL 全文搜索,按日期、限制和偏移量排序

转载 作者:太空宇宙 更新时间:2023-11-04 01:19:23 24 4
gpt4 key购买 nike

我正在尝试对包含超过 1 亿行的大型数据库进行全文搜索。当我做这样的事情时:

SELECT * FROM LOGS 
WHERE MATCH(message) AGAINST('"test"' IN BOOLEAN MODE)
AND username = 'john'
LIMIT 50;

我在半秒内得到了 50 个结果。但是,我想首先获得最新的结果,这意味着我想按日期对结果进行排序。所以我尝试了这样的事情:

SELECT * FROM LOGS 
WHERE MATCH(message) AGAINST('"test"' IN BOOLEAN MODE)
AND username= 'john'
ORDER BY DATE DESC
LIMIT 50;

考虑到每个用户可以拥有数百万条日志,这需要 5 分钟以上的时间。

我正在 Web 应用程序上实现搜索功能,我希望一次获取 50 行,并首先显示最新的日志,当您单击获取更多日志时,我希望使用偏移量获取接下来的 50 个结果。实现这一目标的最佳方法是什么?

最佳答案

只需要实现分页或类似的东西即可使用偏移量获取下一个任何(10、50 等)结果。

使用此示例代码作为引用

$perPage = 10;

$pageNo = $_GET['page'];

现在查找数据库中的总行数。

$totalRows = Get By applying sql query;

$pages = ceil($totalRows/$perPage);

$offset = ($pageNo - 1) * $perPage + 1

$sql = "SELECT * FROM XYZ WHERE cdate='18/07/2012' LIMIT ".$offset." ,".$perPage

现在这可能会导致 sql 注入(inject),因此请确保您将 URL 中的参数用作编码形式,并使用 SQL 函数“mysqli_escape_string”来转义字符串注入(inject)。

关于MySQL 全文搜索,按日期、限制和偏移量排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59852549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com