生成多对多mysql工作台中的索引

时间:2016-10-11 09:54:39

标签: mysql indexing many-to-many query-optimization mysql-workbench

我有一个由多对多关系链接的2个表的模式(所以有第三个表),表格'代码已由MySQL WorkBench生成。

这是代码:

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;

-- -----------------------------------------------------
-- Table `mydb`.`Publication`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Publication` (
  `idPublication` INT NOT NULL AUTO_INCREMENT,
  `Title` VARCHAR(100) NOT NULL,
  `Date` YEAR NOT NULL,
  `Type` VARCHAR(45) NOT NULL,
  `Conference` VARCHAR(45) NULL,
  PRIMARY KEY (`idPublication`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Author`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Author` (
  `idAuthor` INT NOT NULL AUTO_INCREMENT,
  `Name` VARCHAR(70) NOT NULL,
  PRIMARY KEY (`idAuthor`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Author_has_Publication`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Author_has_Publication` (
  `Author_idAuthor` INT NOT NULL,
  `Publication_idPublication` INT NOT NULL,
  PRIMARY KEY (`Author_idAuthor`, `Publication_idPublication`),
  CONSTRAINT `fk_Author_has_Publication_Author`
    FOREIGN KEY (`Author_idAuthor`)
    REFERENCES `mydb`.`Author` (`idAuthor`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_Author_has_Publication_Publication1`
    FOREIGN KEY (`Publication_idPublication`)
    REFERENCES `mydb`.`Publication` (`idPublication`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;



SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

我有一个查询列表(返回前10位最多产的作者,返回每种类型的出版物的编号,在X年找到作者X的所有出版物,找到出版物最多的单词"数据"标题等)。所有这些都已完成并正在运行。但由于db非常庞大(xml文件为4900万行),我被要求查看可以使用索引优化哪些查询。

所以我想知道MySQL工作台是否生成自动索引以处理关系?什么类型的查询可以用哪个索引进行优化?

0 个答案:

没有答案