问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql索引建多了有什么坏处

发布网友 发布时间:2022-04-21 05:40

我来回答

5个回答

热心网友 时间:2022-04-08 03:19

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

1、表的主键、外键必须有索引;
2、数据量超过300的表应该有索引;
3、经常与其他表进行连接的表,在连接字段上应该建立索引;
4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
5、索引应该建在选择性高的字段上;
6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替: A、正确选择复合索引中的主列字段,一般是选择性较好的字段; B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引; C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引; D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段; E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;
8、频繁进行数据操作的表,不要建立太多的索引;
9、删除无用的索引,避免对执行计划造成负面影响; 以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大

热心网友 时间:2022-04-08 04:37

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

一、如果不改进效率,只简化程序,我有建议你对新闻类别进行二进制编码,仍然使用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;
看见没有,可以查询具有一种属性的,也可以查询具有多种属性的数据,程序很方便。

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

热心网友 时间:2022-04-08 06:11

删除数据,修改索引字段,新增操作都会对索引进行维护,维护开销大
同时需要更大的磁盘空间
需要综合平衡,取最优点

热心网友 时间:2022-04-08 08:03

如果不是用来搜寻的字段加了索引,导致插入,更新速度变慢,因为要更新索引表.

热心网友 时间:2022-04-08 10:11

在满足语句需求的情况下,尽量少的访问资源是数据库设计的重要原则,这和执行的 SQL 有直接的关系,索引问题又是 SQL 问题中出现频率最高的,常见的索引问题包括:无索引(失效)、隐式转换。1. SQL 执行流程看一个问题,在下面这个表 T 中,如果我要执行 需要执行几次树的搜索操作,会扫描多少行?

这分别是 ID 字段索引树、k 字段索引树。

这条 SQL 语句的执行流程:

1. 在 k 索引树上找到 k=3,获得 ID=3002. 回表到 ID 索引树查找 ID=300 的记录,对应 R33. 在 k 索引树找到下一个值 k=5,ID=5004. 再回到 ID 索引树找到对应 ID=500 的 R4

5. 在 k 索引树去下一个值 k=6,不符合条件,循环结束

这个过程读取了 k 索引树的三条记录,回表了两次。因为查询结果所需要的数据只在主键索引上有,所以必须得回表。所以,我们该如何通过优化索引,来避免回表呢?2. 常见索引优化2.1 覆盖索引覆盖索引,换言之就是索引要覆盖我们的查询请求,无需回表。

如果执行的语句是 ,这样的话因为 ID 的值在 k 索引树上,就不需要回表了。

覆盖索引可以减少树的搜索次数,显著提升查询性能,是常用的性能优化手段。

但是,维护索引是有代价的,所以在建立冗余索引来支持覆盖索引时要权衡利弊。

2.2 最左前缀原则

B+ 树的数据项是复合的数据结构,比如 的时候,B+ 树是按照从左到右的顺序来建立搜索树的,当 这样的数据来检索的时候,B+ 树会优先比较 name 来确定下一步的检索方向,如果 name 相同再依次比较 sex 和 age,最后得到检索的数据。

可以清楚的看到,A1 使用 tl 索引,A2 进行了全表扫描,虽然 A2 的两个条件都在 tl 索引中出现,但是没有使用到 name 列,不符合最左前缀原则,无法使用索引。所以在建立联合索引的时候,如何安排索引内的字段排序是关键。评估标准是索引的复用能力,因为支持最左前缀,所以当建立(a,b)这个联合索引之后,就不需要给 a 单独建立索引。原则上,如果通过调整顺序,可以少维护一个索引,那么这个顺序往往就是需要优先考虑采用的。上面这个例子中,如果查询条件里只有 b,就是没法利用(a,b)这个联合索引的,这时候就不得不维护另一个索引,也就是说要同时维护(a,b)、(b)两个索引。这样的话,就需要考虑空间占用了,比如,name 和 age 的联合索引,name 字段比 age 字段占用空间大,所以创建(name,age)联合索引和(age)索引占用空间是要小于(age,name)、(name)索引的。

2.3 索引下推

以人员表的联合索引(name, age)为例。如果现在有一个需求:检索出表中“名字第一个字是张,而且年龄是26岁的所有男性”。那么,SQL 语句是这么写的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么时候功率最大 最小 家电多少功率算高功率 大功率用电器在开启瞬间,需要比正常使用功率大很多的启动电流,这是为什 ... 大功率电器设备为什么不能一下开到最大 有一个节能灯突然坏了,是哪个件坏了? 我不知道是节能灯坏了,还是开关面板坏了,按下开关面板时,节能灯有时... 为什么节能灯老是烧坏 湖州南太湖新区包括龙之梦吗 南太湖新区有哪些地方 南太湖是哪里 索引有什么优缺点? MySQL索引过多会产生哪些问题 关于mysql建立索引需要注意的几点事项 数据库索引优缺点 MySQL数据库的索引的操作知多少 MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项 OPPOr15x怎么看手机剩多少电池容量? 个人如何在银行开户? 我想开一家个人银行需要什么条件? 银行开户 必须是本人吗?可以代开吗? 个人去银行开户需要什么资料 本人银行卡是什么意思? 个人银行开户需要带什么资料 银行开户必须本人去吗 本人怎么查询本人在银行的资产情况。 本人开户银行指的是 还贷款必须本人亲自去银行还吗? 在银行办理个人业务,必须要本人去吗 学生本人银行账户填什么 本人的银行卡严重违规行为是指那些 如何理解并正确使用MySql索引 mySQL的索引功能 如何将网页以微信图文的形式发出来? OPPO R15的续航能力,咋样,能坚持一天不 菜鸟驿站加盟电话 coolux微型投影仪怎么和手机连接 404 Not Found 酷乐视X6可以连接电脑吗? 404 Not Found 乐视电视外接音响怎么接线 华为mate7如何连接酷乐视投影仪 404 Not Found 在使用微型投影机酷乐视X3播放3D视频的时候,为什么有时候带上眼镜没有3D效果?怎么回事? 空调是变频好还是定频好? 格力空调变频与定频那个寿命长 格力挂机的变频空调是不是比变频的更加容易坏啊? Old Tom the killer whale,的翻译 格力空调变频好还是定频好? 家用空调买变频好还是定频好 OPPOR15充电需要多久才可以充满?