0 0

mysql的sql语句优化及效率0

mysql数据库建表语句如下,也可看附件。
一共四张表——A老师表,B课程表,C分数表,D学生表
A与B是一对多
B与C是一对多
C与D是多对一
/*
Navicat MySQL Data Transfer

Source Server         : localhost_3306
Source Server Version : 50147
Source Host           : localhost:3306
Source Database       : test

Target Server Type    : MYSQL
Target Server Version : 50147
File Encoding         : 65001

Date: 2013-07-24 22:02:32
*/

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `text_course`
-- ----------------------------
DROP TABLE IF EXISTS `text_course`;
CREATE TABLE `text_course` (
  `cno` varchar(255) NOT NULL,
  `cname` varchar(255) NOT NULL,
  `tno` varchar(255) NOT NULL,
  PRIMARY KEY (`cno`,`tno`),
  KEY `tno` (`tno`),
  KEY `cno` (`cno`),
  CONSTRAINT `text_course_ibfk_1` FOREIGN KEY (`tno`) REFERENCES `text_teacher` (`tno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of text_course
-- ----------------------------
INSERT INTO `text_course` VALUES ('c001', 'J2SE', 't002');
INSERT INTO `text_course` VALUES ('c002', 'Java Web', 't002');
INSERT INTO `text_course` VALUES ('c003', 'SSH', 't001');
INSERT INTO `text_course` VALUES ('c004', 'Oracle', 't001');
INSERT INTO `text_course` VALUES ('c005', 'SQL SERVER 2005', 't003');
INSERT INTO `text_course` VALUES ('c006', 'C#', 't003');
INSERT INTO `text_course` VALUES ('c007', 'JavaScript', 't002');
INSERT INTO `text_course` VALUES ('c008', 'DIV+CSS', 't001');
INSERT INTO `text_course` VALUES ('c009', 'PHP', 't003');
INSERT INTO `text_course` VALUES ('c010', 'EJB3.0', 't002');

-- ----------------------------
-- Table structure for `text_sc`
-- ----------------------------
DROP TABLE IF EXISTS `text_sc`;
CREATE TABLE `text_sc` (
  `sno` varchar(255) NOT NULL,
  `cno` varchar(255) NOT NULL,
  `score` int(11) NOT NULL,
  PRIMARY KEY (`sno`,`cno`),
  KEY `cno` (`cno`),
  CONSTRAINT `text_sc_ibfk_2` FOREIGN KEY (`cno`) REFERENCES `text_course` (`cno`),
  CONSTRAINT `text_sc_ibfk_1` FOREIGN KEY (`sno`) REFERENCES `text_student` (`sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of text_sc
-- ----------------------------
INSERT INTO `text_sc` VALUES ('s001', 'c001', '79');
INSERT INTO `text_sc` VALUES ('s001', 'c002', '83');
INSERT INTO `text_sc` VALUES ('s001', 'c003', '59');
INSERT INTO `text_sc` VALUES ('s002', 'c001', '81');
INSERT INTO `text_sc` VALUES ('s002', 'c002', '73');
INSERT INTO `text_sc` VALUES ('s003', 'c001', '82');
INSERT INTO `text_sc` VALUES ('s003', 'c002', '82');
INSERT INTO `text_sc` VALUES ('s004', 'c001', '61');

-- ----------------------------
-- Table structure for `text_student`
-- ----------------------------
DROP TABLE IF EXISTS `text_student`;
CREATE TABLE `text_student` (
  `sno` varchar(255) NOT NULL,
  `sname` varchar(255) NOT NULL,
  `sage` int(11) NOT NULL,
  `ssex` varchar(255) NOT NULL,
  PRIMARY KEY (`sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of text_student
-- ----------------------------
INSERT INTO `text_student` VALUES ('s001', '张三', '23', '男');
INSERT INTO `text_student` VALUES ('s002', '李四', '23', '男');
INSERT INTO `text_student` VALUES ('s003', '吴鹏', '25', '男');
INSERT INTO `text_student` VALUES ('s004', '琴沁', '20', '女');
INSERT INTO `text_student` VALUES ('s005', '王丽', '20', '女');
INSERT INTO `text_student` VALUES ('s006', '李波', '21', '男');
INSERT INTO `text_student` VALUES ('s007', '刘玉', '21', '男');
INSERT INTO `text_student` VALUES ('s008', '萧蓉', '21', '女');
INSERT INTO `text_student` VALUES ('s009', '陈萧晓', '23', '女');
INSERT INTO `text_student` VALUES ('s010', '陈美', '22', '女');

-- ----------------------------
-- Table structure for `text_teacher`
-- ----------------------------
DROP TABLE IF EXISTS `text_teacher`;
CREATE TABLE `text_teacher` (
  `tno` varchar(255) NOT NULL,
  `tname` varchar(255) NOT NULL,
  PRIMARY KEY (`tno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of text_teacher
-- ----------------------------
INSERT INTO `text_teacher` VALUES ('t001', '刘阳');
INSERT INTO `text_teacher` VALUES ('t002', '谌燕');
INSERT INTO `text_teacher` VALUES ('t003', '胡明星');

------------------------------------------------------
现在我要做的查询是:
/*查询没学过“谌燕”老师课的同学的学号、姓名*/

我写个三种查询语句,那么其在性能或其他方面具体的差别在哪里?或者有没有更好的语句或其他建议

具体三个语句如下:
select 
      SNO,SNAME,TNAME
from 
     ( select 
            student.SNO    as SNO,
            student.SNAME  as SNAME,
            student.SAGE   as SAGE,
            student.SSEX   as SSEX,
            score.SCORE    as SCORE,
            course.CNAME   as CNAME,
            teacher.TNAME  as TNAME
       from
            TEXT_STUDENT student right join TEXT_SC score
            on  student.SNO=score.SNO left join TEXT_COURSE  
            course on score.CNO=course.CNO left join
            TEXT_TEACHER teacher on course.TNO=teacher.TNO
    ) oop
where oop.tname!='谌燕' 


select 
      student.SNO,student.SNAME,teacher.TNAME
from
      TEXT_STUDENT student right join TEXT_SC score on
                                 student.SNO=score.SNO 
                           left join TEXT_COURSE course on 
                                 score.CNO=course.CNO
                           left join TEXT_TEACHER teacher on 
                                 course.TNO=teacher.TNO
where teacher.tname!='谌燕' 


select 
    student.SNO,student.SNAME,teacher.TNAME
from
    TEXT_STUDENT student,
    TEXT_TEACHER teacher,
    TEXT_SC score ,
    TEXT_COURSE course
WHERE student.SNO=score.SNO and 
      score.CNO=course.CNO and 
      course.TNO=teacher.TNO and 
      teacher.tname!='谌燕' 
2013年7月25日 10:52
目前还没有答案

相关推荐

    Oracle Sql语句转换成Mysql Sql语句

    本项目提供了一个Java源码工具,能够帮助用户便捷地将Oracle SQL语句转换为MySQL SQL语句。 Oracle SQL与MySQL SQL的主要差异在于以下几个方面: 1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在...

    Effective MySQL之SQL语句最优化.pdf

    3. SQL语句优化的重要性:在数据库操作中,SQL语句的效率直接影响到应用的运行性能。因为数据库系统是多用户环境,对SQL语句的优化可以减少资源的竞争,提高并发处理能力。 4. SQL语句优化相关原理:优化原理包括但...

    Effective MySQL之SQL语句最优化(高清)

    《Effective MySQL之SQL语句最优化》提供了很多可以用于... ●用SQL语句优化的生命周期来识别、确认、分析然后优化SQL语句,并检查优化的结果;  ●学习使用不为常人所知的一些性能技巧来改进索引效率并简化SQL语句。

    mysql优化sql语句的优化(索引,常用小技巧.)

    综上所述,MySQL数据库的优化涉及到多个方面,包括数据库设计、SQL语句优化、数据配置以及硬件与操作系统配置等。通过综合运用这些优化方法,可以有效提升数据库系统的性能和稳定性,为用户提供更好的服务体验。

    提升MYSQL查询效率的10个SQL语句优化技巧.doc

    以下是十个 SQL 语句优化技巧来提升 MYSQL 查询效率: 1. 优化 MySQL 查询缓存 MySQL 查询缓存可以启用高速查询缓存,让数据库引擎在后台悄悄的处理是提高性能的最有效方法之一。当同一个查询被执行多次时,如果...

    《Effective MySQL之SQL语句最优化》手册

    《Effective MySQL之SQL语句最优化》是一本深入探讨如何提升数据库性能的专业手册,它针对SQL语句的优化提供了一系列实用且高效的策略。在数据库管理领域,SQL优化是提升系统性能的关键环节,尤其是在处理大数据量时...

    MySQL SQL语句练习题及答案

    MySQL SQL语句练习题及答案 本资源提供了 MySQL SQL 语句的练习题及答案,涵盖了创建表、插入数据、删除数据、更新数据、查询数据等多方面的知识点。 一、创建表 在 MySQL 中,创建表使用 CREATE TABLE 语句。...

    sql语句优化 mssql优化 mysql优化 oracle优化

    sql语句优化.chmmssql优化 mysql优化 oracle优化

    《Effective MySQL之SQL语句最优化》数据库SQL

    本篇文章将依据书中的核心概念,结合实际应用,详细介绍SQL语句优化的关键知识点。 首先,理解索引及其作用是SQL优化的基础。索引是数据库管理系统用来加速数据检索的数据结构。合理创建和使用索引可以显著提高查询...

    Effective MySQL之SQL语句最优化

    "Effective MySQL之SQL语句最优化"这本书深入探讨了如何通过优化SQL查询来提高MySQL数据库的效率。以下是基于这个主题的一些关键知识点: 1. **索引优化**:索引是数据库性能提升的核心。书中的内容可能涵盖如何...

    sql查询优化(提高MySQL数据库查询效率的几个技巧)

    SQL 查询优化(提高 MySQL 数据库查询效率的几个技巧) 在 MySQL 数据库中,查询优化是一个非常重要的方面。在实际应用中,高效的查询可以提高整个系统的性能和响应速度。下面我们将介绍几个提高 MySQL 数据库查询...

    MySQL数据库优化SQL篇PPT课件.pptx

    执行计划可以帮助我们了解SQL语句的执行过程,从而对其进行优化。执行计划可以通过EXPLAIN语句来查看。 二、SELECT语句优化 SELECT语句是MySQL数据库中最常用的语句之一。SELECT语句的优化是非常重要的。通过优化...

    介绍六个有用的MySQL的SQL语句

    MySQL SQL 语句实践指南 MySQL 是一种广泛使用的关系数据库管理系统,SQL 语句是其核心组成部分。...这六个有用的 MySQL SQL 语句可以帮助您更好地使用 MySQL 数据库,提高工作效率和数据处理能力。

    sql语句优化心得

    ### SQL语句优化心得 #### 引言 在软件开发过程中,SQL语句的编写往往直接关系到应用程序的性能表现。特别是在系统初期阶段,由于数据量较小,即使编写了一些效率较低的SQL语句,也可能不会立即暴露出来。然而,...

    PB 从SQL语句获取数据存储(MySQL)

    标题 "PB 从SQL语句获取数据存储(MySQL)" 指的是使用PowerBuilder (PB) 开发工具,通过SQL语句从MySQL数据库中检索和处理数据存储的过程。在这个Demo中,PB11.5 版本被用作开发环境,而MySQL作为后台数据库系统。...

    《Effective MySQL之SQL语句最优化》PDF

    《EffectiveMySQL之SQL语句最优化》提供了很多可以用于改进数据库和应用程序性能的最佳实践技巧,并对这些技巧做了详细的解释。《EffectiveMySQL之SQL语句最优化》希望能够通过一步步详细介绍SQL优化的方法,帮助...

    最新整理的常用sql语句及优化大全

    本资源“最新整理的常用sql语句及优化大全”涵盖了SQL的基础使用和性能优化,对于数据库管理员、开发人员或是学习者来说,都是极具价值的学习资料。 一、SQL常用语句 1. **数据查询**:`SELECT`语句是SQL中最基本...

    Oracle数据库sql转换mysql数据库工具

    "Oracle数据库sql转换mysql数据库工具" 提供了解决这一问题的解决方案,允许用户将Oracle数据库中的SQL语句或数据结构转换为MySQL兼容的格式。 在数据库迁移过程中,这样的工具至关重要,因为它可以简化工作流程,...

    mysql sql语句学习大全

    mysql sql编程入门级资料 包括数据库的增、删、改、查。

    优化sql语句执行效率几点注意事项

    在数据库管理中,SQL语句的执行效率是关键因素之一,尤其对于大数据量的应用来说,优化SQL性能至关重要。本文将详细探讨几个关于优化SQL语句执行效率的重要注意事项,旨在帮助数据库管理员和开发者提升系统性能。 ...

Global site tag (gtag.js) - Google Analytics