xml地图|网站地图|网站标签 [设为首页] [加入收藏]

关于SQL的相关笔记,MySql的优化步骤

来源:http://www.ccidsi.com 作者:最新解决方案 人气:101 发布时间:2019-05-22
摘要:此情此景【一】多表联合检查时,主表与关联表同时与平等张(第一张表)有关联,类似三角恋关系- 涉及表: HOUSE:记录了屋家消息 ROOMS:记录了房间音讯 HOUSE_STATUS:记录了情状音讯

此情此景【一】多表联合检查时,主表与关联表同时与平等张(第一张表)有关联,类似三角恋关系-


涉及表:

  • HOUSE:记录了屋家消息
  • ROOMS:记录了房间音讯
  • HOUSE_STATUS:记录了情状音讯的中文字段

屋企信息HOUSE表中有一个有关记录房屋处境的字段,status_id,与HOUSE_STATUS的主键表关联,而房间音讯ROOMS表中,也是有1个关于记录房子情况的字段,也是status_id,当HOUSE与ROOMS创立关系查询时,两张表又分别须求与HOUSE_STATUS那张表建构关系查询。则出现了标题说的三角形恋关系,查询艺术只要求利用小名查询就能够:

SELECT
  HOUSE.ID,
  HOUSE.NAME,
  HOUSE.FLOOR,
  HOUSE.EXPECT_PRICE,
  HOUSE.AREA_NUMBER,
  HOUSE.HAVE_KITCKEN,
  HOUSE.HAVE_BALCONY,
  PROVINCE.provinceName,
  CITY.cityName,
  AREA.areaName,
  COMMUNITY.ID             community_ID,
  COMMUNITY.NAME           community_Name,
  HOUSE_LAYOUT.NAME        layout_Name,
  DECORATION_TYPE.NAME     decorationType_Name,
  HOUSE_STATUS.STATUS_NAME houseStatus_Name,
  PAYMENT.PAYMENT_NAME     payment_Name,
  RENT_MODE.ID             rentMode_ID,
  RENT_MODE.NAME           rentMode_Name,
  ROOMS.ID,
  ROOMS.ROOM_NO,
  ROOMS.HOUSE_STATUS_ID,
  ROOMS.AREA_NUMBER,
  ROOMS.EXPECT_PRICE,
  ROOMS.HAVE_WASHROOM,
  ROOMS.HAVE_KITCKEN,
  ROOMS.HOUSE_STATUS_ID,
  ROOMS.HAVE_DESK,
  ROOMS.HAVE_AIRCONDITIONING,
  ROOMS.HAVE_WARDROBE,
  ROOMS.HAVE_WATERHEATER,
  ROOMS.HAVE_WLAN,
  rooms_Status.ID          rooms_StatusID,
  rooms_Status.STATUS_NAME rooms_StatusName
FROM HOUSE
  JOIN PROVINCE ON HOUSE.PROVINCE_ID = PROVINCE.provinceID
  JOIN CITY ON HOUSE.CITY_ID = CITY.cityID
  JOIN AREA ON HOUSE.AREA_ID = AREA.areaID
  JOIN COMMUNITY ON HOUSE.COMMUNITY_ID = COMMUNITY.ID
  JOIN HOUSE_LAYOUT ON HOUSE.LAYOUT_ID = HOUSE_LAYOUT.ID
  JOIN DECORATION_TYPE ON HOUSE.DECORATION_TYPE_ID = DECORATION_TYPE.ID
  JOIN HOUSE_STATUS ON HOUSE.HOUSE_STATUS_ID = HOUSE_STATUS.ID
  JOIN PAYMENT ON HOUSE.EXPECT_PAYMENT_ID = PAYMENT.ID
  JOIN HOUSE_RENT_MODE ON HOUSE.ID = HOUSE_RENT_MODE.HOUSE_ID
  JOIN RENT_MODE ON HOUSE_RENT_MODE.RENT_MODE_ID = RENT_MODE.ID
  JOIN ROOMS ON HOUSE.ID = ROOMS.HOUSE_ID
  JOIN HOUSE_STATUS rooms_Status ON ROOMS.HOUSE_STATUS_ID = rooms_Status.ID
WHERE HOUSE.ID = 1

 

MySql的优化步骤,MySql优化步骤

MySql优化的相似步骤:

一.透过show status 命令明白种种sql的试行效用

  SHOW STATUS提供msyql服务器的图景消息

  一般景色下,我们只须要通晓以”Com”起首的通令

  show session status like ‘Com%’:呈现当前的总是的总括结果

  show global status like ‘Com%’ :展现自数据库上次起步现今的计算结果

  注:默认是session级别的

  其中Com_XXX代表XXX语句所实行的次数。
首要注意:Com_select,Com_insert,Com_update,Com_delete通过这么些参数,能够轻巧地询问到近些日子数据库的运用是以插入更新为主依然以询问操作为主,以及各种的SQL大致的举办比例是有个别。

  此外,还有多少个参数需求专注下:

  show status like ‘Connections’// 试图连接MySQL服务器的次数

  show status like ‘Uptime’//服务器工作的时刻(单位秒)

皇家网上娱乐,  show status like ‘Slow_queries’//慢查询的次数 (默许是10秒中就当做是慢查询,如下图所示)

  皇家网上娱乐 1

  a) 如何询问mysql的慢查询时间

    Show variables like 'long_query_time';

  b) 修改mysql 慢查询时间

    set long_query_time=2//倘诺查询时间超越二秒就当成是慢查询

二. 固定实践效用相当低的SQL语句(dql出现难点的概率较dml的大)

  难题是:怎样在2个类型中,找到慢查询的select语句?

  答案:mysql支持把慢查询语句记录到日志文件中。工程师要求修改php.ini的布局文件,暗许意况下,慢查询记录是不展开的。

  开启慢查询记录的步调:

  打开 my.ini ,找到 [mysqld] 在其下部增加

  long_query_time = 2

  log-slow-queries = D:/mysql/logs/slow.log #安装把日记写在那边,可认为空,系统会给2个缺省的文本

     例子:大家数据表中有一千万条的数据量

  DQL语句:SELECT * FROM order_copy WHERE id=12345;

  皇家网上娱乐 2

  查询耗费时间:1九s>二s,所以mysql会将该条select语句记录到慢查询日志中

  SELECT * FROM order_copy WHERE id=123肆五的推行时间:

  增加索引前:1九s

  加多索引后:0.0捌s

三.通过explain深入分析低功能的SQL语句的履市价况

  使用explain分析该dql语句:

EXPLAIN SELECT * FROM order_copy WHERE id=12345
会发出如下新闻:
select_type:表示查询的类型。
table:输出结果集的表
type:表示表的连日类型(system和const为佳)
possible_keys:表示查询时,恐怕应用的目录
key:表示其实接纳的目录
key_len:索引字段的长短
rows:扫描的行数
Extra:执市场价格况的叙说和验证

只顾:要尽量幸免让type的结果为all,extra的结果为:using filesort

皇家网上娱乐 3

4.明显难题并选拔对应的优化措施

  • 常用的优化措施是增添索引。增添索引,大家决不加内存,不用改程序,不用调sql,只要进行个科学的’create index’,查询速度就或许增进百倍千倍。不过全世界未有无偿的午饭,查询速度的增高是以插队、更新、删除的进程为代价的,那些写操作,扩充了大批量的I/O。

举个例子:给字段id增多索引:

ALTER TABLE order_copy ADD PRIMARY KEY(id)

给一千万的数据增进primary key 需求耗费时间: 428秒(九秒钟)

EXPLAIN SELECT * FROM order_copy WHERE id=12345

皇家网上娱乐 4

幸好因为给id增多了目录,才使得rows的结果为一

唯独索引并不是能够不管加多的,以下三种情景需牢记在心:

  • 较频仍的作为查询条件字段应该创设索引

    select * from order_copy where id = $id

  • 唯一性太差的字段不符合单独创立索引,纵然再3作为查询条件

   select * from order_copy where sex=’女’

  • 创新特别频仍的字段不合乎创制索引

    select * from order_copy where order_state=’未付款’

  • 不会晤世在WHERE子句中字段不应该创设索引

目录的门类:

  • P汉兰达IMARAV四Y 索引      => 在主键上活动创立
  • INDEX 索引          => 便是平凡索引
  • UNIQUE 索引        => 相当于INDEX Unique
  • FULLTEXT            => 只在MYISAM 存款和储蓄引擎帮忙, 指标是全文索引,在剧情种类有效的多, 在全英文网址用多(英文词独立). 粤语数据有的时候用,意义十分的小 国内全文索引常常 使用 sphinx 来完毕.

目录的采取

  • 树立索引 create [UNIQUE|FULLTEXT]  index index_name on tbl_name (col_name [(length)] [ASC | DESC] , …..);
    alter table table_name ADD INDEX [index_name] (index_col_name,...)

    增多主键(索引) ALTE陆风X8 TABLE 表名 ADD PPRADOIMACRUISERY KEY(列名,..); 联合主键

  • 删除索引 DROP INDEX index_name ON tbl_name;
    alter table table_name drop index index_name;
  • 除去主键(索引)相比特别: alter table t_b drop primary key;
  • 查询索引(均可) show index from table_name;
    show keys from table_name;
    desc table_Name;

连锁材质:

explain的使用:

MySql优化的相似步骤: 一.经过show status 命令精晓各类sql的实践效能 SHOW STATUS提供msyql服务器的图景音讯 一般情...

本文由68399皇家赌场发布于最新解决方案,转载请注明出处:关于SQL的相关笔记,MySql的优化步骤

关键词: 68399皇家赌场

最火资讯