浅议MYSQL之优化与索引
华迪教育
华迪信息
1.优化与索引
提升选择操作性能的最佳方法是创建一个或多个索引在查询中测试的列。索引的作用类似于数据行里的指针,使得此查询能够快速判定哪些行能够匹配where子句中的条件,同时为其他行检索其列值。所有的MYSQL数据类型都可以被索引。
虽然很容易为查询中的每一列创建一个索引,但由于MYSQL选取索引会浪费空间及时间,所以没必要如此。因此你必须找到恰当的平衡点,以实现快速查询时使用最佳指标集。
1.1选择索引数据类型
索引被用来快速查找特定值的行。如果没有索引,MYSQL必须先从第一行开始,然后通过整个表来查找相关行。表越大,代价也就越高。如果表有列的索引,MYSQL就能快速确定行在数据文件中的位置,而不必查看所有数据行。如果一个表有1000行,索引的速度至少比顺序读取快100倍。
选择索引的数据类型原则
越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。在MSQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间;以及用整型数据类型存储IP地址。尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MSQL中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或一个空串代替空值。CREATE TABLE People (
???last_name?varchar(50)??? not null,
???first_name varchar(50)??? not null,
???dob??????? date?????????? not null,
???gender???? enum(m, f) not null,
???key(last_name, first_name, dob)
);
其索引包含表中每一行的last_name、first_name和dob列。其结构大致如下:
索引存储的值按索引列中的顺序排列。可以利用B-Tree索引进行全关键字、关键字范围和关键字前缀查询,当然,如果想使用索引,你必须保证按索引的最左边前缀(leftmost prefix of the index)来进行查询。由于B-树中的节点都是顺序存储的,所以可以利用索引进行查找(找某些值),也可以对查询结果进行ORDER BY。MYSQL中,只有Memory存储引擎显示支持hash索引,是Memory表的默认索引类型,尽管Memory表也可以使用B-Tree索引。Memory存储引擎支持非唯一hash索引,这在数据库领域是罕见的,如果多个值有相同的hash code,索引把它们的行指针用链表保存到同一个hash表项中。假设创建如下一个表:CREATE TABLE te 或 四川华迪信息
您可能关注的文档
- 第二节、网页HTML代码 DIV+CSS基础知识.doc
- 附件3:2016年全省机关事业单位工勤技能岗位人员岗位技能远程网络培训工种目录.doc
- 成都ppp、招投标培训.docx
- 解决POS快捷方式消失问题操作手册.doc
- 爱尔菲第18期金牌导购培训会(合肥站)震撼开启.docx
- 动漫设计:线性绑定与蒙皮.docx
- 通乳、催乳汤制作方法.doc
- 单元实施计划_周长.doc
- 导游词评价量规.doc
- 第一讲 图书馆资源与服务导引 课后作业.doc
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
原创力文档

文档评论(0)