powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите правильно расставить индексы
14 сообщений из 14, страница 1 из 1
Помогите правильно расставить индексы
    #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
Помогите правильно расставить индексы
    #38907486
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxixПоле field1 не может быть null если field2 не null.
Поле field3 не может быть null если field1 не null или field2 не null или field4 не null.
Это не по существу.
saxixНаиболее часто встречающиеся селекты по field1 и field2 , реже по field4
Скорость каких именно селектов не устраивает?
...
Рейтинг: 0 / 0
Помогите правильно расставить индексы
    #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
Помогите правильно расставить индексы
    #38907528
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxixAkinaпропущено...

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

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

так не пойдет.
надо конкретно разбирать запросы.
...
Рейтинг: 0 / 0
Помогите правильно расставить индексы
    #38907555
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я правильно понимаю, что в индекс включаются все поля, которые указываются в блоках where и order by?
...
Рейтинг: 0 / 0
Помогите правильно расставить индексы
    #38907557
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сколько часто употребляемых запросов, столько и индексов?
...
Рейтинг: 0 / 0
Помогите правильно расставить индексы
    #38907634
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxixЯ правильно понимаю, что в индекс включаются все поля, которые указываются в блоках where и order by? Нет.
...
Рейтинг: 0 / 0
Помогите правильно расставить индексы
    #38907699
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxixЯ правильно понимаю, что в индекс включаются все поля, которые указываются в блоках where и order by?

Только в where.

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

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

Групп в MySQL действительно нет. Но системы копирования прав и назначения прав структурам в большинстве случаев достаточно.
...
Рейтинг: 0 / 0
Помогите правильно расставить индексы
    #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
Помогите правильно расставить индексы
    #38908905
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DELIMITER
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите правильно расставить индексы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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