php+mysql开发中的经验与常识小结
文章:PHP与MySQL开发中的经验与常识详解
本文将分享PHP与MySQL数据库程序设计中的经验及常识,为读者提供一些宝贵的参考建议。涵盖了数据库表设计、字段命名规范、索引设计以及PHP与MySQL的开发经验等多个方面。下面是详细内容:
一、基础规范篇
在PHP与MySQL开发中,遵循一些基础规范至关重要。例如,推荐使用InnoDB存储引擎,因其支持事务处理、行级锁等特点,有助于提升并发性能和资源利用率。建议使用UTF-8字符集以避免转码和乱码风险。数据表和数据字段必须加入中文注释,以便于日后维护和理解。尽量避免使用存储过程、视图、触发器等,以减少数据库CPU负担,提升业务逻辑的扩展性。禁止在数据库中存储大文件或照片,避免数据库处理不擅长的事务。
二、命名规范篇
在命名方面,遵循规范的命名约定能使代码更易读、易维护。库名、表名、字段名应使用小写字母,下划线风格,不超过32个字符,且名称应简洁明了。禁止拼音和英文混用。表名应简洁清晰,非唯一索引名为idx_x,唯一索引名为uniq_x。
三、表设计规范篇
四、字段设计规范篇
在字段设计方面,应遵循一些规范以确保数据的准确性和查询性能。字段应定义为NOT NULL并提供默认值,避免使用null值,以提高查询性能和减少存储空间。避免使用TEXT和BLOB类型,以防止浪费磁盘和内存空间并影响数据库性能。应使用整数存储货币值以避免小数导致的计算误差。手机号应使用varchar(20)存储以支持模糊查询和适应各种格式。避免使用ENUM类型,可使用TINYINT代替,以避免DDL操作的繁琐性。ENUM的内部实际存储是整数而非字符串。
五、索引设计指南
在数据库管理中,索引设计至关重要。以下是关于索引设计的规范建议:
(17)建议将单表索引控制在5个以内,以保持数据库的高效运行。
(18)单索引字段数不宜超过5个。当字段数量过多时,索引在过滤数据方面的作用将大打折扣。
(19)对于更新频繁且区分度较低的属性,应禁止建立索引。更新会改变B+树的结构,频繁更新的字段若建立索引会显著降低数据库性能。例如,“性别”这类属性,建立索引的意义不大,不能有效过滤数据,性能与全表扫描相近。
组合索引的使用也需遵循一定规范:
(20)建立组合索引时,应将区分度高的字段置于前面,以更有效地过滤数据。
六、SQL使用指南
在编写SQL语句时,应遵守以下规范以提高数据库性能:
(21)选择字段要精确,避免使用SELECT 获取所有字段。明确指定列属性,因为读取不需要的列会增加CPU、IO和NET的消耗,且可能无法有效利用覆盖索引。使用SELECT 容易在增加或删除字段后引发程序BUG。
(23)避免属性隐式转换。例如,避免在WHERE条件中使用函数或表达式对日期字段进行操作,这可能导致全表扫描而无法命中索引。正确的做法是直接使用日期字段进行比较。
(24)避免在WHERE条件的属性上使用函数或表达式。当使用此类操作时,应考虑其他因素如性能影响,并寻找替代方案。例如,对于日期字段的查询,可以使用正确的日期格式和比较方式来提高查询效率。
(25)避免负向查询和以“%”开头的模糊查询。负向查询条件和模糊查询可能会导致全表扫描,影响查询效率。建议使用正向查询和正确的模糊匹配方式来提高查询性能。例如,使用IN查询替代OR条件可以更有效地命中索引。
(26)尽量避免在大表上使用JOIN查询和子查询。这些操作可能会产生临时表,消耗大量内存和CPU资源,严重影响数据库性能。对于大表的查询操作,可以考虑其他优化方式如分页查询或索引优化。
(27)尽量避免使用OR条件,尝试改用IN查询来提高查询效率。旧版本的MySQL中,OR查询可能无法命中索引,即使能命中索引也会增加CPU负担。
(28)应用程序应捕获SQL异常并相应处理,以确保数据库的稳定运行和程序的健壮性。对于PHP开发者,我们提供了一系列相关专题文章供您参考学习,希望对您在PHP程序设计方面有所帮助。如有更多疑问或需求,请查阅相关文档或寻求专业支持。遵守上述规范能够提高数据库性能并减少错误发生。请注意在实际应用中根据具体情况灵活调整这些规范。
编程语言
- php+mysql开发中的经验与常识小结
- jQuery插件支持同一页面被多次调用
- jquery实现全选、全不选以及单选功能
- PHP数组内存利用率低和弱类型详细解读
- 使用javascript做在线算法编程
- Yii2验证器(Validator)用法分析
- 详解Vue2.0里过滤器容易踩到的坑
- 使用apifm-wxapi快速开发小程序过程详解
- vue v-model实现自定义样式多选与单选功能
- asp网页邮箱访问
- 微信公众平台开发教程①获取用户Openid及个人信
- JavaScript输出所选择起始与结束日期的方法
- js判断手机号是否正确并返回的实现代码
- jsp中页面之间的跳转forward与sendRedirect的区别
- 模糊查询
- PHP制作用户注册系统