我有一个由多对多关系链接的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工作台是否生成自动索引以处理关系?什么类型的查询可以用哪个索引进行优化?