MySQL的
假设您想要通过某个id检索单个记录,但是如果您在大型有序集中遇到它,您想知道它的位置是什么.
例如,一个照片库.你落在一张照片上,但系统必须知道它在整个画廊中的偏移量.
我想我可以使用自定义索引字段来跟踪位置,但是在SQL中必须有更优雅的方式.
因此,首先创建一个虚拟表,其位置 # 按您的 ORDER BY 排序,然后从该集中选择最高的一个。这是更大结果集中的位置。如果您不按唯一值/值集进行排序,您可能会遇到问题......
如果您在 (photo_gallery_id, date_created_on) 上创建索引,它可能会执行索引扫描(取决于照片的分布),这应该比表扫描更快(假设您的 gallery_id 不是 90% 的照片或其他) 。
SELECT @row := 0;
SELECT MAX( position )
FROM ( SELECT @row := @row + 1 AS position
FROM photos
WHERE photo_gallery_id = 43
AND date_created_on <= 'the-date-time-your-photo-was'
ORDER BY date_created_on ) positions;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
593 次 |
| 最近记录: |