当前位置: 首页 > news >正文

手机网站建设方案书王烨是哪个小说的主角

手机网站建设方案书,王烨是哪个小说的主角,wordpress 打开速度慢,手机网站生产appSQL调优教程 基础方法论 任何计算机应用系统性能问题最终都可以归结为 1.cpu消耗 2.内存使用 3.对磁盘#xff0c;网络或其他I/O设备的输入/输出(I/O)操作 遇到性能问题时#xff0c;要判断的第一点就是“在这三种资源中#xff0c;是否有哪一种资源达到了有问题的程度”网络或其他I/O设备的输入/输出(I/O)操作 遇到性能问题时要判断的第一点就是“在这三种资源中是否有哪一种资源达到了有问题的程度”因为这一点能指导我们搞清楚“需要优化重构什么”和“如何优化重构它”sql调优领域 应用程序级调优包括: 1.sql语句调优 2.管理变化调优实例级调优 1.内存 2.数据结构 3.实例配置操作系统交互 1.I/O 2.swap 3.Parameterssql优化方法 1.优化业务数据 2.优化数据设计 3.优化流程设计 4.优化sql语句 5.优化物理结构 6.优化内存分配 7.优化I/O 8.优化内存竞争 9.优化操作系统sql优化过程 1.定位有问题的语句 2.检查执行计划 3.检查执行计划中优化器的统计信息 4.分析相关表的记录数、索引情况 5.改写sql语句、使用HINT、调整索引、表分析 6.有些sql语句不具备优化的可能需要优化处理方式 7.达到最佳执行计划什么是好的sql语句 1.尽量简单模块化 2.易读易维护 3.节省资源(内存/cpu/扫描的数据块要少/少排序) 4.不造成死锁sql语句的处理过程 sql语句的四个处理阶段:解析PARSE: 检查语法 检查语义和相关的权限 在共享池中查找sql语句 合并MERGE视图定义和子查询 确定执行计划绑定BIND 在语句中查找绑定变量 赋值或重新赋值执行EXECUTE 应用执行计划 执行必要的I/O和排序操作提取FETCH 从查询结果中返回记录 必要时进行排序 使用ARRAY FETCH机制sql表的基本连接方式 sql表连接分成外连接、内连接和交叉连接 外连接 外连接可分为左连接、右连接、完全外连接 1、左连接 left join或left outer join SQL语句select * from student left join course onstudent.IDcourse.ID 左外连接包含left join左表所有行如果左表中某行在右表没有匹配则结果中对应行右表的部分全部为空(NULL). 注此时我们不能说结果的行数等于左表数据的行数。当然此处查询结果的行数等于左表数据的行数因为左右两表此时为一对一关系 2、右连接 right join或right outer join SQL语句select * from student right join course on student.IDcourse.ID 右外连接包含right join右表所有行如果左表中某行在右表没有匹配则结果中对应左表的部分全部为空(NULL) 注同样此时我们不能说结果的行数等于右表的行数。当然此处查询结果的行数等于左表数据的行数因为左右两表此时为一对一关系。 3、完全外连接 full join或full outer join SQL语句select * from student full join course on student.IDcourse.ID 完全外连接包含fulljoin左右两表中所有的行如果右表中某行在左表中没有匹配则结果中对应行右表的部分全部为空(NULL)如果左表中某行在右表中没有匹配则结果中对应行左表的部分全部为空(NULL) 内连接 内连接 join 或inner join SQL语句select * from student inner join course on student.IDcourse.ID inner join是比较运算符只返回符合条件的行。 此时相当于select * fromstudent,course where student.IDcourse.ID 交叉连接 交叉连接cross join SQL语句select * from student cross join course 概念没有WHERE子句的交叉联接将产生连接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小 如果我们在此时给这条SQL加上WHERE子句的时候比如SQL:select * from student cross join course where student.IDcourse.ID ,此时将返回符合条件的结果集结果和inner join所示执行结果一样. sql优化最佳实践 选择最有效率的表连接顺序 首先要明白一点就是SQL的语法顺序和执行顺序是不一致的SQL的语法顺序select 【distinct】....from ....【xxx join】【on】....where....group by ....having....【union】....order by......SQL的执行顺序from ....【xxx join】【on】....where....group by ....avg()、sum()....having....select 【distinct】....order by......from子句--执行顺序为从后往前、从右到左 表名(最后面的那个表名为驱动表执行顺序为从后往前,所以数据量较少的表尽量放后where子句--执行顺序为自下而上、从右到左 将可以过滤掉大量数据的条件写在where的子句的末尾性能最优group by和order by子句执行顺序都为从左到右select子句--少用*号尽量取字段名称。 使用列名意味着将减少消耗时间 避免产生笛卡尔积 含有多表的sql语句必须指明各表的连接条件以避免产生笛卡尔积。N个表连接需要N-1个连接条件避免使用* 当你想在select子句中列出所有的列时使用动态sql列引用“*”是一个方便的方法不幸的是是一种非常低效的方法。sql解析过程中还需要把“*”依次转换为所有的列名这个工作需要查询数据字典完成用where子句替换having子句 where子句搜索条件在进行分组操作之前应用而having子句条件在进行分组操作之后应用。避免使用having子句having子句只会在检索出所有纪录之后才对结果集进行过滤这个处理需要排序总计等操作。如果能通过where子句限制记录的数目那就能减少这方面的开销。用exists、not exists和in、not in相互替代 原则是哪个的子查询产生的结果集小就选哪个select * from t1 where x in (select y from t2)select * from t1 where exists (select null from t2 where y x)IN适合于外表大而内表小的情况exists适合于外表小而内表大的情况使用exists替代distinct 当提交一个包含一对多表信息比如部门表和雇员表的查询时避免在select子句中使用distinct一般可以考虑使用exists代替exists使查询更为迅速因为子查询的条件一旦满足立马返回结果。低效写法select distinct dept_no,dept_namefrom dept d,emp e where d.dept_noe.dept_no高效写法select dept_no,dept_name from dept d where exists (select x from emp e where e.dept_nod.dept_no)备注其中x的意思是因为exists只是看子查询是否有结果返回而不关心返回的什么内容因此建议写一个常量性能较高用exists的确可以替代distinct不过以上方案仅适用dept_no为唯一主键的情况如果要去掉重复记录需要参照以下写法select * from emp where dept_no exists (select Max(dept_no)) from dept d, emp e where e.dept_nod.dept_no group by d.dept_no)避免隐式数据类型转换 隐式数据类型转换不能适用索引导致全表扫描t_tablename表的phonenumber字段为varchar类型以下代码不符合规范select column1 into i_l_variable1 from t_tablename where phonenumber18519722169;应编写如下select column1 into i_lvariable1 from t_tablename where phonenumber18519722169;使用索引来避免排序操作 在执行频度高又含有排序操作的sql语句建议适用索引来避免排序。 排序是一种昂贵的操作在一秒钟执行成千上万次的sql语句中如果带有排序操作往往会消耗大量的系统资源性能低下。 索引是一种有序结果如果order by后面的字段上建有索引将会大大提升效率尽量使用前端匹配的模糊查询 例如column1 like ABC%方式可以对column1字段进行索引范围扫描而column1 kike %ABC%方式即使column1字段上存在索引也无法使用该索引只能走全表扫描不要在选择性较低的字段建立索引 在选择性较低的字段使用索引不但不会降低逻辑I/O相反往往会增加大量逻辑I/O降低性能。比如性别列男和女避免对列的操作 不要在where条件中对字段进行数学表达式运算任何对列的操作都可能导致全表扫描 这里所谓的操作包括数据库函数计算表达式等等 查询时要尽可能将操作移到等式的右边甚至去掉函数例如下列sql条件语句中的列都建有恰当的索引但几十万条数据下已经执行非常慢了select * from record where amount/30(1000 (执行时间11s)由于where子句中对列的任何操作结果都是在sql运行时逐行计算得到因此它不得不进行全表扫描而没有使用上面的索引如果这些结果在查询编译时就能得到那么就可以被sql优化器优化使用索引避免全表扫描因此sql重写如下select * from record where amount(1000*30 (执行时间不到1秒)尽量去掉IN,“OR” 含有IN、OR的where子句常会使用工作表使索引失效如果不产生大量重复值可以考虑把子句拆开拆开的子句中应该包含索引select count(*) from stuff where id_no in(0,1)可以拆开为select count(*) from stuff where id_no0select count(*) from stuff where id_no1然后在做一个简单的加法尽量去掉( 尽量去掉(避免全表扫描如果数据是枚举值且取值范围固定可以使用or方式update serviceinfo set state0 where state(0;以上语句由于其中包含了(执行计划中用了全表扫描Table accessfull没有用到state字段上的索引实际应用中由于业务逻辑的限制字段state只能是枚举值例如0,1或2因此可以去掉(利用索引来提高效率。update serviceinfo set state0 where state 1 or state 2避免在索引列上使用IS NULL或者IS NOT NULL 避免在索引中使用任何可以为空的列导致无法使用索引批量提交sql 如果你需要在一个在线的网站上去执行一个大的DELETE或INSERT查询你需要非常小心要避免你的操作让你的整个网站停止响应。因为这两个操作是会锁表的表一锁住了别的操作都进不来了。Apache会有很多的子进程或线程。所以其工作起来相当有效率而我们的服务器也不希望有太多的子进程线程和数据库链接这是极大的占服务器资源的事情尤其是内存。如果你把你的表锁上一段时间比如30秒钟那么对于一个有很高访问量的站点来说这30秒所积累的访问进程或线程数据库链接打开的文件数可能不仅仅会让你的WEB服务崩溃还可能会让你的整台服务器马上挂了。所以如果你有一个大的处理你一定把其拆分
http://www.zqtcl.cn/news/767598/

相关文章:

  • 做网站的公司重庆万网x5 wordpress
  • 印刷设计营销网站网站设置成黑白
  • 百度自助建站官网上海徐汇网站建设
  • 网站定制 北京贵阳网站建设公司哪家好
  • 如何做logo模板下载网站企业策划
  • 合肥做网站的公司讯登欧亚达网站是哪家公司做的
  • 网站模板带有sql后台下载企业网站建设平台的功能
  • 网站推广的实际案例电子商务网站建设的要求
  • 永平建设有限公司网站2023一般纳税人企业所得税怎么算
  • 创业网站推广怎么做简单的网站首页
  • 外贸网站模板 外贸网站制作如何推广宣传一个品牌
  • 中企动力企业邮箱 手机邮箱河南网站建设优化推广
  • 广州seo网站多少钱王野天津音乐广播电台图片
  • 东莞网站制作十强怎么做一个链接网站
  • 深圳网站设计 建设首选wordpress 获取父页面
  • 大兴企业网站建设公司wordpress谷歌字体优化
  • 哈尔滨建设银行网站网站建设运营服务商
  • 重庆本地建站企业网站建设流程及费用
  • 网站建设需要用到那些语言简述网站建设和推广评价指标
  • 17网站一起做 佛山印刷做网站网上接单
  • 网站建设步骤 优帮云网站建设首选定制开发
  • 专门做家居的网站国内企业网站设计
  • 做网站时怎么取消鼠标悬停性价比最高网站建设
  • 三网合一网站模板网站上内容列表怎么做
  • 鲜花商城网站建设西安房产网站大全
  • 家庭宽带做网站空间一个数据库可以做几个网站
  • 环境设计公司排名搜索引擎seo是什么意思
  • 北京网站建设策划排名长春市建设集团股份有限公司
  • 网站建设项目怎么跟进客户安阳哪里有做网站的
  • 重庆定制网站建设公司郑州网站模板