0

0

针对数据库索引的优化

php中文网

php中文网

发布时间:2016-06-07 15:58:32

|

1456人浏览过

|

来源于php中文网

原创

本文主要对索引的创建及使用做具体描述,至于为什么要使用索引、使用索引带来哪些好处、索引的分类等内容这里不再赘述,如果想知道请参考相关文档。 一、如何正确的创建索引 1、对主键、外键 建立索引 由于开发中经常通过主键或者外键去查找某条或者多条记录

本文主要对索引的创建及使用做具体描述,至于为什么要使用索引、使用索引带来哪些好处、索引的分类等内容这里不再赘述,如果想知道请参考相关文档。

一、如何正确的创建索引

1、对主键、外键 建立索引

由于开发中经常通过主键或者外键去查找某条或者多条记录,所以需要对主键、外键建立索引

2、对于经常出现在查询条件中的字段建立索引

对于经常出现在查询条件中的字段建立索引往往能提高查询效率

3、结合需要返回的字段创建索引

对于需要查询结果返回的字段建立组合索引可以不用查询数据表就可以得到数据,例如:select id,name,code from student where id=? ,如果对id,name,code建立索引的话,直接查询索引表就可以得到想要的数据了,这时就不用再访问student表。

创建索引的常用注意事项有这么几个,创建索引当然不是越多越好,如果创建索引不当,还会导致查询效果比没有创建索引还低,或者索引表的数据比数据表的数据还大,所以使用需要需要小心谨慎。

下边给出一个索引创建指引表:

字段类型

常见字段名

需要建索引的字段

主键

ID,PK

外键

PRODUCT_ID,COMPANY_ID,MEMBER_ID,ORDER_ID,TRADE_ID,PAY_ID

有对像或身份标识意义字段

HASH_CODE,USERNAME,IDCARD_NO,EMAIL,TEL_NO,IM_NO

索引慎用字段,需要进行数据分布及使用场景详细评估

日期

GMT_CREATE,GMT_MODIFIED

年月

YEAR,MONTH

状态标志

PRODUCT_STATUS,ORDER_STATUS,IS_DELETE,VIP_FLAG

类型

ORDER_TYPE,IMAGE_TYPE,GENDER,CURRENCY_TYPE

区域

COUNTRY,PROVINCE,CITY

操作人员

CREATOR,AUDITOR

数值

LEVEL,AMOUNT,SCORE

长字符

ADDRESS,COMPANY_NAME,SUMMARY,SUBJECT

不适合建索引的字段

描述备注

DESCRIPTION,REMARK,MEMO,DETAIL

大字段

FILE_CONTENT,EMAIL_CONTENT



二、如何正确的使用索引

1、避免在where 子句中对字段进行is null 判断,这样将使引擎放弃使用索引而是全表扫描数据

2、避免在where子句中对字段进行不等潘丹(、 !=),否则同样使用引擎全表扫描

3、避免在where子句中对字段进行or,in 判断,同样导致引擎全表扫描数据

建议使用union代替,如下例子,前提是code是索引

LongShot
LongShot

LongShot 是一款 AI 写作助手,可帮助您生成针对搜索引擎优化的内容博客。

下载

不建议使用的语句:select id from student where code = '000012' or code = '000015'

建议使用的语句: select id from student where code = '000012' union all select id from student where code = '000015'

4、避免在where 子句中对字段进行not in,not exists 的判断,同样导致索引失效

5、避免在where子句中对字段进行表达式操作(函数算法计算),同样导致索引失效

例如:select id from student where DATEDIFF(SYSDATE,createDate) > 30

select id from student where col/2 =15

6、使用Like时,避免使用非字母开头检索

例如:select id from student where name like '%王%' 应该使用select id from student where name like '王%'

7、在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让查询字段顺序与索引顺序相一致。


PS:上边标注红色的第三条为五六年前数据库执行的标准,现在数据库一般都支持对in 或者 or 的索引查询。

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

42

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

4

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 4.1万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.3万人学习

Sass 教程
Sass 教程

共14课时 | 0.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号