gpt4 book ai didi

php - 有没有更好的方法在 PHP/MySQL 中创建字母分页索引?

转载 作者:可可西里 更新时间:2023-11-01 06:36:47 25 4
gpt4 key购买 nike

在我的 CMS 中,我的标准分页行为之一是在按 alpha 列排序时显示字母快速栏。例如,如果结果按姓氏排序,我会在分页下输出一系列链接,从 A 到 Z,将您直接带到特定第一个字符的页面。

示例:

目前,我正在通过获取该列的所有结果,按字母顺序排序,然后在 PHP 中循环遍历所有结果并记录记录出现在哪个页面来实现这一点。当您只处理几百个结果时,这很好用,但我现在正在处理一个可能有几十万行的项目,这根本不是一个可行的选择。

是否有更有效的方法来生成这种索引?请注意,它还需要处理的不仅仅是 A-Z,因为行可能以数字或标点符号开头。

编辑澄清:我不是在寻找所有第一个字符的简单列表,这很简单。我需要计算以该字符开头的字段将位于总结果的哪一页。比如说我们要找一个叫 Walter 的人,我有 1000 行,我需要知道 W 在 1-1000 范围内的哪个位置开始。

最佳答案

我认为它是一个 varchar 字段,所以您是否考虑过以下问题:

SELECT DISTINCT SUBSTRING(lastname FROM 1 FOR 1) FROM mytable;

这将为您提供一个独特的姓氏首字母列表。

您还可以使用 UPPER() 来确保只获取大写字符。 LEFT() 也会实现类似的效果,因此您应该尝试看看哪个在您的数据集上执行得最快。

编辑:如果你还想要计数:

SELECT DISTINCT SUBSTRING(lastname FROM 1 FOR 1) AS firstletter, COUNT(*) AS counter FROM mytable GROUP BY firstletter;

无需对每个字母进行第二次查询。

关于php - 有没有更好的方法在 PHP/MySQL 中创建字母分页索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6588465/

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