MySQL排序和按varchar性能分组

半透明

我需要找到一种方法来提高varchar字段的顺序和分组性能。

现在,我可以将辅助表用于艺术家和格式进行分组,但是与标题字段以及艺术家和标题按字母顺序排序所引起的问题相比,这没什么。

我正在修补每个字符中的前两个字符,然后将它们添加到表格中,并使用这些ID进行数字排序,但随着时间的推移,新的艺术家和具有不同字符组合的新标题就会出现,因为某些艺术家名称可以以任何形式开头,因此可以歌曲名称,在这种情况下,一切都消失了。我不想写一个触发器的怪兽,每次插入它,新的两个字符组合都必须开始更改所有内容的ID才能重置订单,这将是一项巨大的工作,并且可能会导致更多的问题。

谁能在这个问题上提出更好的方法?

更新

因此,我制作了一个artist表和两个不错的触发器来处理所有事情。我提出了一项计划,以检查添加新艺术家时艺术家的字母顺序并进行必要的更新。

我获得了0.24秒的时间,剩下2.98美元可以剃光。

现在看来,问题是titleORDER和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
onedevteam.com

建立新表格

artistID int
artist varchar

artist在表中替换artistID

然后按ID加入表格并按artistID分组...

数据库规范化是您的朋友:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章