我继承了一个结构如下的表:
ID Name Timestamp Data
----------------------------
1 A 40 ...
2 A 30 ...
3 A 20 ...
4 B 40 ...
5 B 20 ...
6 C 30 ...
7 C 20 ...
8 C 10 ...
Run Code Online (Sandbox Code Playgroud)
ID是一个标识字段和主键,在Name和Timestamp字段上有非唯一索引.
什么是最有效的方式来获取最新的每个项目名称记录,即在上述行的表1,4和6,因为它们是项目中最先进的日期项应返回一个,乙和Ç分别.
通常使用SELECT内部SELECT来减少查询的数量; 但是当我检查这会导致查询速度变慢(这显然对mysql性能有害).我有一个简单的查询
SELECT something
FROM posts
WHERE id IN (
SELECT tag_map.id
FROM tag_map
INNER JOIN tags
ON tags.tag_id=tag_map.tag_id
WHERE tag IN ('tag1', 'tag2', 'tag3', 'tag4', 'tag5', 'tag6')
)
Run Code Online (Sandbox Code Playgroud)
这导致查询"查询时间3-4s;锁定时间约为0.000090s;检查约200行"的查询速度慢.
如果我拆分SELECT查询,每个查询都会很快; 但这会增加不兼容高并发性的查询数量.
这是通常的情况,还是我的编码有问题?