从理论上讲,完全可以为数据表里的每个字段分别建一个索引,但MySQL把同一个数据表里的索引总数限制为16个。  
 1.InnoDB数据表的索引  
 与InnoDB数据表相比,在InnoDB数据表上,索引对InnoDB数据表的重要性要大得多。在InnoDB数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级锁定机制的苊、基础。“数据行级锁定”的意思是指在事务操作的执行过程中锁定正在被处理的个别记录,不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE命令以及INSERT、UPDATE和DELETE命令。出于效率方面的考虑,InnoDB数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。  
 2.限制   如果WHERE子句的查询条件里有不等号(WHEREcoloum!=),MySQL将无法使用索引。类似地,如果WHERE子句的查询条件里使用了函数(WHEREDAY(column)=),MySQL也将无法使用索引。在JOIN操作中(需要从多个数据表提取数据时),MySQL只有在主键和外键的数据类型相同时才能使用索引。  
 如果WHERE子句的查询条件里使用比较操作符LIKE和REGEXP,MySQL只有在搜索模板的第一个字符不是通配符的情况下才能使用索引。比如说,如果查询条件是LIKE'abc%‘,MySQL将使用索引;如果查询条件是LIKE'%abc’,MySQL将不使用索引。  
 在ORDERBY操作中,MySQL只有在排序条件不是一个查询条件表达式的情况下才使用索引。(虽然如此,在涉及多个数据表查询里,即使有索引可用,那些索引在加快ORDERBY方面也没什么作用)。如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如“0/1”或“Y/N”等值,就没有必要为它创建一个索引。
上一篇:Linux环境下CD播放器的设计与实现
下一篇:Kinect体感游戏控制器的手势检测方法研究

基于Apriori算法的电影推荐

浅析人工智能体系建设【5490字】

人工智能茬知识付费产业...

智能光网络茬城域网中的...

家居智能系统建设中的标...

宽带城域网接入层的智能...

现代小区智能技术應用分析【3251字】

中国学术生态细节考察《...

神经外科重症监护病房患...

AT89C52单片机的超声波测距...

国内外图像分割技术研究现状

公寓空调设计任务书

志愿者活动的调查问卷表

10万元能开儿童乐园吗,我...

医院财务风险因素分析及管理措施【2367字】

承德市事业单位档案管理...

C#学校科研管理系统的设计