首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个查询会像预期的那样工作吗?

问这个查询会像预期的那样工作吗?
EN

Stack Overflow用户
提问于 2012-05-02 07:34:52
回答 1查看 57关注 0票数 2

我有一个只有一列的mysql表,该列包含一些3个字母单词和一些4个字母单词,以及一些5和6个字母单词。

我想要一个查询,首先从所有3个字母单词中随机选择,当它们都消失时,然后移动到4个字母单词,依此类推。

这是我的问题:

代码语言:javascript
复制
SELECT `word` FROM `words` ORDER BY LENGTH(`word`) ASC, RAND() LIMIT 1

到目前为止,在我尝试过的几次中,它都像预期的那样工作,但我想确保它总是像这样工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-02 08:19:26

您的查询在我看来很好,但我希望表很小,因为MySQL每次都会扫描所有行,然后使用文件排序,所有这些操作都是为了返回一行。

添加wordlength列并对其进行索引不会改善查询,因为ORDER BY RAND()函数将使索引的使用失效。

考虑将单词拆分到单独的表中,这取决于它们的长度,至少您将只扫描相同长度的单词的所有行。首先从three_letter_words表中选择,如果没有结果,则从four_letter_words表中选择,依此类推。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10405800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档