MySQL选择查询在使用limit和offset参数时不工作

1 投票
1 回答
1838 浏览
提问于 2025-04-15 19:11

我在我的Windows Vista系统上运行MySQL 5.1。这里提到的表使用的是MyISAM存储引擎,大约有1000万行数据。这个表用来存储用户在网站上发布的文本消息。

我尝试在这个表上运行以下查询,

query = "select id, text from messages order by id limit %d offset %d" %(limit, offset)

其中限制(limit)设置为一个固定值(在这个例子中是20000),而偏移量(offset)则每次增加20000。

当偏移量等于240000时,这个查询进入了一个无限循环。就是这个特定的值,而不是其他任何值。

我把这个查询单独放到一个脚本里运行,结果还是一样。然后我直接运行最后一个查询(偏移量为240000),结果却正常!

接着我在MySQL客户端直接执行相同的查询,以确保错误不是出在Python的数据库访问模块上。所有的查询都返回了结果,除了那个偏移量为240000的查询。

然后我查看了MySQL服务器的日志,发现了以下内容。

[ERROR] C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld: Sort aborted

这可能意味着当我因为沮丧停止了Python进程时,mysqld进程正在“排序”某些东西。当我查看my.ini文件时,发现里面有很多MAX_*的选项。我目前正在尝试调整这些选项,但在此期间先把这个信息分享出来。

任何帮助都非常感谢!

1 个回答

0

你有没有用 myisamchk 来检查一下表格?

撰写回答