mysql索引建立规则有哪些

56次阅读
没有评论

共计 1403 个字符,预计需要花费 4 分钟才能阅读完成。

mysql 索引建立规则有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

mysql 建立索引常用的规则如下:

1、表的主键、外键必须有索引;

2、数据量超过 300 的表应该有索引;

3、经常与其他表进行连接的表,在连接字段上应该建立索引;

4、经常出现在 Where 子句中的字段,特别是大表的字段,应该建立索引;

5、索引应该建在选择性高的字段上;

6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

7、复合索引的建立需要进行仔细分析; 尽量考虑用单字段索引代替:A、正确选择复合索引中的主列字段,一般是选择性较好的字段; B、复合索引的几个字段是否经常同时以 AND 方式出现在 Where 子句中? 单字段查询是否极少甚至没有? 如果是,则可以建立复合索引; 否则考虑单字段索引; C、如果复合索引中包含的字段经常单独出现在 Where 子句中,则分解为多个单字段索引; D、如果复合索引所包含的字段超过 3 个,那么仔细考虑其必要性,考虑减少复合的字段; E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;

8、频繁进行数据操作的表,不要建立太多的索引;

9、删除无用的索引,避免对执行计划造成负面影响; 以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的; 相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大

你现在种方法效率其实是差不多的,都非常低,极端低,最低。

一、如果不改进效率,只简化程序,我有建议你对新闻类别进行二进制编码,仍然使用 features 一个字段来表示,字段为整数类型,使用最低开始的四个二进制位是否为 1 来表示是否为图片新闻、头条新闻、首页新闻、重要新闻,例如 7(二进制的 0111) 表示具有头条、首页、重要三个属性。查询的时候使用位运算 来实现,图片新闻、头条新闻、首页新闻、重要新闻的权重分别是 8、4、2、1,这时候假若调用三条是图片新闻的新闻时,直接可以用 sql 语句:

select * from news where features 8=8 order by news_id desc limit 0,3;

假若调用三条是图片新闻、并且重要新闻时,直接可以用 sql 语句:

select * from news where features 9=9 order by news_id desc limit 0,3;

看见没有,可以查询具有一种属性的,也可以查询具有多种属性的数据,程序很方便。

二、高效的办法是另外建立表来记录各类新闻,冗余保存数据到多个表中,需要查什么新闻就在哪一个表中查询。但是程序会非常复杂,保存的时候要根据类别存储到不同的表中,修改的最麻烦,如果修改类别还需要把数据从一个表移动到另外的表。当然,作为新闻这样的应用,都是保存一次、修改一二次、查看成千上万次,为了整体效率肯定是关键优化查询代码。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计1403字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)