我需要找到一种通过varchar字段提高订单和分组性能的方法。
现在我可以使用艺术家和格式的辅助表进行分组,但这与标题字段引起的问题以及艺术家和标题按字母顺序排序无关。
我正在修补每个人的前两个字符并将它们添加到表中并使用这些ID以数字顺序排序但是及时新的艺术家和具有不同字符组合的新标题将作为一些艺术家名称出现可以从任何事情开始,歌曲标题也是如此,在这种情况下,一切都会消失。 我不想写一个触发器的怪物,每次插入时,新的两个字符组合必须开始更改所有内容的ID以重置顺序,这将是一个巨大的努力,可能会导致更多的问题。
有谁能建议在这个问题上采取更好的方法?
更新
所以我制作了一个艺术家表和两个很好的触发器来处理所有事情。 我做了一个cron来检查艺术家是否按字母顺序添加新的并进行必要的更新。
我增加了0.24秒,剩下2.98,剃光了。
现在看来问题是title
ORDER和GROUP,主要是GROUP,订单似乎只消耗了20%的时间。
查询
SELECT *
FROM `records`
WHERE `deleted` = 0 AND `hidden` = 0
GROUP BY `artist_id`, `title`, `format_id`
ORDER BY `artist_id` ASC, `title` ASC
LIMIT 0, 100;
模式
`deleted` tinyint 1 unsigned key
`hidden` tinyint 1 unsigned key
`format_id` tinyint 2 unsigned key
`artist_id` int 11 unsigned key
`title` varchar 255 key
答案 0 :(得分:0)
创建新表
artistID int
artist varchar
并使用artist
替换表格中的artistID
。
然后按照艺术家ID ...
按ID和组连接表格数据库规范化是你的朋友:)