从以下几个方面来进行优化
3NF:我们设计表要符合一定的规范分为1NF-6NF,我们PHP网站满足3NF范式规范是递进的,首先要满足1NF,才能满足2NF,一次类推
1NF:即表的属性(列)具有原子性不可再分割,这里说的不可分割指的是列名的含义是准确的不可分割。(只要是关系型数据库就自然的满足1NF)
非关系型数据库:面向对象或者集合
面向文档的数据库:MongDB
2NF:保证表的数据具有唯一性通常情况下是设计主键,这个主键一般是自增长的
3NF:表Φ没有冗余数据我们表中的数据如果可以显式的推导或者隐式的推导,就不要直接写记录
必须知道这几个常用的信息含义
global:表示从数据库啟动到现在
什么是一个慢查询:就是mysql管理员定了一个时间,比如10秒如果一个查询时间超过10s,则这就是一个慢查询,这个10秒是可以自定義,默认就是10s
我们构建一个大表 400w
这时慢查询的次数可以记录但是,日志没有记录在默认情况下,mysql不记录慢查询
④看看是否能把慢查询记錄下来
慢查询日志,存放的地方取决my.ini文件中指定的一个配置
当有慢查询时,就会把慢查询记录到日志中然后分析并解决
这时通过创建索引,速度提高了
小建议:如果时间紧急但没有什么好方案。那就添加索引查那个表就添加那个。
那些列上适合添加索引
索引的创建,修改删除,查询->如何使用索引
主键索引最多只能有一个
主键索引快是因为它不可能重复找到一个就行了
普通索引就因为可能重复
說明一下主键索引和唯一索引的区别
1.主键索引不能为空,也不能重复
2.唯一索引可以为空多个NULL也可以,但是如果有值,就不能重复
一句话:主要用处是快速检索文章的关键字在默认情况下,mysql提供的全文索引支持对英文文章的检索->如果文章中含有中文则需要学习sphinx(coreseek)
看出,全文索引是以匹配度的高低来决定是否把这条记录检索出来全文索引对常用词是不会建立索引,我们把这些常用词称为停止词
技巧1:对于创建多列索引只要查询条件使用了最左的列,索引一般就会被使用
技巧2:对于使用Like的查询查询如果是 ‘%aaa’不会使用索引’aaa%’hu会使用到索引,查询内容的左边使用%就不会使用到索引
技巧3:如果我们在使用group by时候,我们只希望分租不希望排序,这可以使用order by null 进行控制
技巧4:有些情况下可以使用连接来替代子查询,因为使用join,MySQL不需要在内存中创建临时表
技巧5:使用OR语句请保证个哥条件都是索引->自连接,sql语句