Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите правильно расставить индексы / 14 сообщений из 14, страница 1 из 1
17.03.2015, 18:59:15
    #38907482
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите правильно расставить индексы
Первый проект с MySQL.
Есть таблица
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE IF NOT EXISTS `test` (
  `id` bigint(20) NOT NULL AUTOINCREMENT,
  `field1` varchar(50) DEFAULT NULL,
  `field2` varchar(50) DEFAULT NULL,
  `field3` varchar(50) DEFAULT NULL,
  `field4` varchar(50) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;  


Поле field1 не может быть null если field2 не null.
Поле field3 не может быть null если field1 не null или field2 не null или field4 не null.
Наиболее часто встречающиеся селекты по field1 и field2 , реже по field4
...
Рейтинг: 0 / 0
17.03.2015, 19:01:58
    #38907486
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите правильно расставить индексы
saxixПоле field1 не может быть null если field2 не null.
Поле field3 не может быть null если field1 не null или field2 не null или field4 не null.
Это не по существу.
saxixНаиболее часто встречающиеся селекты по field1 и field2 , реже по field4
Скорость каких именно селектов не устраивает?
...
Рейтинг: 0 / 0
17.03.2015, 19:08:20
    #38907492
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите правильно расставить индексы
AkinasaxixПоле field1 не может быть null если field2 не null.
Поле field3 не может быть null если field1 не null или field2 не null или field4 не null.
Это не по существу.
saxixНаиболее часто встречающиеся селекты по field1 и field2 , реже по field4
Скорость каких именно селектов не устраивает?Если честно - всех. На локальной машине при 4 млн записей даже select count(*) from test идет по 130 секунд
...
Рейтинг: 0 / 0
17.03.2015, 20:07:07
    #38907528
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите правильно расставить индексы
saxixAkinaпропущено...

Это не по существу.
пропущено...

Скорость каких именно селектов не устраивает?Если честно - всех. На локальной машине при 4 млн записей даже select count(*) from test идет по 130 секунд

так не пойдет.
надо конкретно разбирать запросы.
...
Рейтинг: 0 / 0
17.03.2015, 20:40:11
    #38907555
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите правильно расставить индексы
Я правильно понимаю, что в индекс включаются все поля, которые указываются в блоках where и order by?
...
Рейтинг: 0 / 0
17.03.2015, 20:43:58
    #38907557
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите правильно расставить индексы
сколько часто употребляемых запросов, столько и индексов?
...
Рейтинг: 0 / 0
17.03.2015, 22:42:45
    #38907634
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите правильно расставить индексы
saxixЯ правильно понимаю, что в индекс включаются все поля, которые указываются в блоках where и order by? Нет.
...
Рейтинг: 0 / 0
18.03.2015, 00:24:23
    #38907699
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите правильно расставить индексы
saxixЯ правильно понимаю, что в индекс включаются все поля, которые указываются в блоках where и order by?

Только в where.

order by редко можно индексом оптимизировать, и не стоит этим заниматься.
Ну и без конкретного запроса совсем об этом говорить бесполезно.
...
Рейтинг: 0 / 0
18.03.2015, 00:27:33
    #38907701
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите правильно расставить индексы
AkinasaxixЯ правильно понимаю, что в индекс включаются все поля, которые указываются в блоках where и order by? Нет.

Ну да, на счёт "всех полей" конечно тоже далеко не так.
Бывают SARG-и, и не SARG-и, в примитивном изложении --
SARG-и -- это поля, фильтрующиеся не под функцией или выражением по равенству или предикату LIKE с префиксным выражением.
( xxx LIKE 'abc%' )
...
Рейтинг: 0 / 0
18.03.2015, 08:03:11
    #38907796
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите правильно расставить индексы
Спасибо. На ночь начитался про индексы и ключи.
...
Рейтинг: 0 / 0
18.03.2015, 08:06:17
    #38907801
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите правильно расставить индексы
и еще спрошу. Насколько я понял - мускуле нет групп пользователей или тому подобного как в постгресе?
...
Рейтинг: 0 / 0
18.03.2015, 09:29:21
    #38907856
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите правильно расставить индексы
Насчёт индексов - если селективность индекса низкая, как правило дешевле сканировать таблицу, чем ещё и в индексы лазить. Приблизительный порог селективности составляет 5-20% (т.е. если в секции отбора по данному полю отбирается треть записей, индекс не будет использоваться, а если десятая или сотая часть - будет). Впрочем, и тут есть свои нюансы. Например, если суммарный размер записи велик, разумнее сканировать индекс даже при низкой селективности. Если индекс покрывающий, разумнее работать с ним, а не с таблицей. Но это всё нечастые случаи. К тому же всегда можно серверу приказать использовать или не использовать определённый индекс соотв. инструкцией в запросе.

Групп в MySQL действительно нет. Но системы копирования прав и назначения прав структурам в большинстве случаев достаточно.
...
Рейтинг: 0 / 0
18.03.2015, 17:39:42
    #38908864
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите правильно расставить индексы
Подскажите по синтаксису
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE PROCEDURE `addUser` (IN username varchar(50), IN  password varchar(50))
BEGIN
	SET @query = CONCAT('CREATE USER "', username,'"@"localhost" IDENTIFIED BY "', password, '" ');
        PREPARE stmt FROM @query; 
        EXECUTE stmt; 
        DEALLOCATE PREPARE stmt;
END


Соответственно на первой строке после BEGIN отваливается( #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 )
Хотя вот так не ругается:
Код: sql
1.
2.
3.
4.
5.
6.
SET @username = "test";
SET @password = "test";
SET @query = CONCAT('CREATE USER "', @username,'"@"localhost" IDENTIFIED BY "', @password, '" ');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;



Чувствую проблема со скобками или входящими переменными - поигрался - ноль эмоций.
...
Рейтинг: 0 / 0
18.03.2015, 18:03:17
    #38908905
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите правильно расставить индексы
DELIMITER
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите правильно расставить индексы / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]