大表数据查询,怎么优化 

  1. 优化shema、sql语句+索引; 
  2. 第二加缓存,memcached, redis; 
  3. 主从复制,读写分离; 
  4. 垂直拆分,根据你模块的耦合度,将一个大的系统分为多个小的系统, 
  也就是分布式系统;
   

  SQL的生命周期? 

  1. 应用服务器与数据库服务器建立一个连接 
  2. 数据库进程拿到请求sql 
  3. 解析并生成执行计划,执行 
  4. 读取数据到内存并进行逻辑处理 
  5. 通过步骤一的连接,发送结果到客户端 
  6. 关掉连接,释放资源
 
 

  mysql中 in 和 exists 区别 

  mysql中的in语句是把外表和内表作hash 连接,而exists语句是对外表作loop 循环,每次loop循环再对内表进行查询。一直大家都认为exists比in语句的效率要高,这种说法其实是不准确的。这个是要区分环境的。
  1. 如果查询的两个表大小相当,那么用in和exists差别不大。 
  2. 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in。 
  3. not in 和not exists:如果查询语句使用了not in,那么内外表都进行 全表扫描,没有用到索引;而not extsts的子查询依然能用到表上的索 
    引。所以无论那个表大,用not exists都比not in要快。
 

  超键、候选键、主键、外键分别是什么? 

  超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为: 作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。 
 
  候选键:是最小超键,即没有冗余元素的超键。 
  主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。 
  一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。 
  外键:在一个表中存在的另一个表的主键称此表的外键。
 
      ——五道题的分享,若有不对还望指出,火星会更改