mysql - 随机执行 SELECT 时为数据库表建立索引会有多大区别

标签 mysql database select

最近,我开发了一个非常简单的网络应用程序用于调查。我正在使用 MySQL 来存储我的数据。每个用户都会从数据库表中“随机”抽取一个问题。我需要知道索引是否有助于提高检索性能,而“SELECT”每次都会选择随机记录。 谢谢

这是我正在使用的 SQL 命令:

'SELECT * FROM iens2.review_phrases ORDER BY RAND() LIMIT 1'

最佳答案

如果您的“随机”数字是问题序列列的序列号(没有间隙),那么对该序列列建立索引肯定会有所帮助:

WHERE question.sequence_no = :rand

但是如果你只是

ORDER BY RAND()

那么索引就无济于事了。与

ORDER BY id
LIMIT 1 OFFSET :rand

order by 子句字段上的索引会有所帮助,但性能仍然比按序列号访问问题要差

关于mysql - 随机执行 SELECT 时为数据库表建立索引会有多大区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6173917/

相关文章:

mysql - 为特定列创建了两次索引

mysql - 向查询的最后一列添加注释但不在数据库中更新它

mysql查询相关表的条件

mysql - 如何使用 SQLite 创建数字未知的事件表

node.js - 如何使用 Node.js 将多条记录插入 Oracle DB

php - 如何在mysql select语句中回显COUNT个数?

php - MYSQL Select语句解释

android - 从数据库中获取空字符串时如何修复它?

Mysql:通过选择每第 n 行需要帮助

mySQL:尝试创建外键时出错