mysql 索引创建

时间 ,金额 ,状态, 用户 ID 。
四个字段如果要创建一个组合索引,以提高搜索效率,该如何组合会更优化一些?
具体作用是要用于后台管理使用的。因为考虑到每个都可能频繁使用,所以也都不能确定谁先开头会比较合适。
希望有大佬给提供意见参考。感谢。

阅读 2.3k
2 个回答

你这个需求根本不需要用到组合索引啊
用户ID单独索引,时间单独索引就行了
具体原因,是因为索引只在你查的数量低于总函数的20%才起作用
也就是说,状态这种低唯一性的字段不加索引
金额这个数字确实是高唯一性,但是他的update应该挺频繁,如果给他加了索引,意味着每次update都要重建索引,所以这个字段也不适合加索引

MySQL的索引主要指的是BTree索引,需要遵循最左前缀原则,常规的做法会根据select语句对索引进行定制,像这种后台管理的场景,sql基本是拼接的,可以说没有固定索引,这种情况,可以使用以下方案进行优化:

  1. 暂时不建索引,把MySQL的慢查询打开,对系统中的慢查询进行统计分析,然后有针对性的进行索引优化
  2. 使用MySQL主从架构,在从库上进行查询,系统会慢,但保证不对主库造成影响
  3. 放弃MySQL,使用搜索引擎技术,及基于lucene的Solr或es
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题