1. Чем полезны покрывающие индексы?

  2. Какие индексы и почему будут созданы в результате запросов?

    CREATE TABLE foo (
    	id INT AUTO_INCREMENT PRIMARY KEY,
    	bar_id INT,
    	baz_id INT,
    	code VARCHAR(16) UNIQUE KEY,
    	name VARCHAR(64)
    );
    CREATE INDEX idx_foo_bar ON foo (bar_id, name);
    CREATE INDEX idx_foo_baz ON foo (name, baz_id);
    ALTER TABLE foo ADD FOREIGN KEY (baz_id) REFERENCES baz (id);
    ALTER TABLE foo ADD FOREIGN KEY (bar_id) REFERENCES bar (id);
    
  1. Что такое кластерный индекс?

  2. Какие индексы и почему будут созданы в результате запросов?

    CREATE TABLE foo (
    	id INT AUTO_INCREMENT PRIMARY KEY,
    	bar_id INT,
    	baz_id INT,
    	code VARCHAR(16) UNIQUE KEY,
    	name VARCHAR(64)
    );
    CREATE UNIQUE INDEX idx_code ON foo (code);
    CREATE INDEX idx_foo_baz ON foo (name, baz_id);
    ALTER TABLE foo ADD FOREIGN KEY (baz_id) REFERENCES baz (id);
    
  1. Чем отличаются корелирующие и не коррелирующие подзапросы?

  2. В чем отличие BTREE и HASH индекса? Какова их применимость?

  1. Что лучше, JOIN или подзапрос? Почему?

  2. Какие индексы необходимо построить?

    SELECT * FROM foo WHERE a = 5 AND (b = 5 OR c = 6);
  1. Что такое slow_query_log?

  2. Почему нельзя просто построить по одному индексу на каждый столбец?

  1. Что такое filesort?

  2. Какой индекс необходимо построить?

    SELECT * FROM foo WHERE a = 5 AND b = 6 ORDER BY c;
    SELECT * FROM foo WHERE a > 5 AND b = 6;
    
  1. Почему использование индекса может замедлить выполнение запроса?

  2. Чем в MySQL отличаются выражения?

    • field1 = 1 OR field1 = 42 OR field1 = 1337
    • field1 IN (1, 42, 1337)
  1. Что такое селективность индекса?

  2. Какие особенности поведения, в контексте индексов, есть у NULL-полей?