che*_*cco 2 mysql sql indexing
我有一个MySQL问题
我有两个表(帖子和作者)的一对多关系(因为每个帖子都是由作者写的,作者可以写多个帖子).
所以这些是表格:
Authors: id:BIGINT, name:VARCHAR(255) Posts: id:BIGINT, author_id:BIGINT, body:TEXT
我有700,000个帖子和60,000个作者.
如果我选择一个作者(例如author_id = 45)并且我想要他写的随机帖子我写道:
SELECT * FROM Posts WHERE author_id = 45 ORDER BY RAND() LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
我知道这是对的,但当我在网上同时有4,000人时,需要大约6秒钟.
也许在Posts表中索引author_id列会加快速度?
谢谢你们!:)
索引应该镜像您最流行的WHERE子句方案.
在这种特殊情况下,创建索引,然后将查询更改为:
SELECT id,author_id,body
FROM Posts
WHERE author_id = 45
ORDER BY RAND()
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
这将阻止在搜索之前进行模式查找,从而提高性能.
SELECT*对于高频查询来说是邪恶的.
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |