Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оптимизация boolean, mysql v5.5 
:(
    Опции темы
tishaishii
Дата 11.12.2016, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Таблица:
Код

DELIMITER $$

CREATE TABLE `test` (
  `id` int(7) NOT NULL AUTO_INCREMENT,
  `val` int(7) NOT NULL DEFAULT '0',
  `bool` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  INDEX(`val`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `fill_test`()
BEGIN
    DECLARE `v_i` BIGINT( 20 ) UNSIGNED DEFAULT 1e6 ;

    WHILE ( `v_i` > 0 ) DO
        SET `v_i` = `v_i` - 1 ;
        
        INSERT INTO
            `test`
        SET
                `val` = rand( ) * 10000 ,
                `bool` = rand( ) * 2 ;
    END WHILE ;
END $$

CALL `fill_test`( ) $$

DELIMITER ;


Запрос:
Код

SET profiling = true ;
SELECT
    `t1`.*
FROM
    `test` AS `t1`
WHERE
    ( `t1`.`val` > 1 ) ;
SHOW PROFILES ;

-- выводит 0.05080000

EXPLAIN
SELECT
    `t1`.*
FROM
    `test` AS `t1`
WHERE
    ( `t1`.`val` > 1 ) ;

/*
Выводит:
# id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
1, SIMPLE, t1, ALL, val, , , , 1000000, Using where
*/


Запрос:
Код

SET profiling = true ;
SELECT
    `t1`.*
FROM
    `test` AS `t1`
WHERE
    ( `t1`.`bool` IS true ) ;
SHOW PROFILES ;

-- выводит 0.0.05997800

EXPLAIN
SELECT
    `t1`.*
FROM
    `test` AS `t1`
WHERE
    ( `t1`.`bool` IS true ) ;
/*
Выводит: 
# id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
1, SIMPLE, t1, ALL, , , , , 1000000, Using where
*/


В обоих случаях выводит: "Using where" и время выполнения запроса с индексом и с полным перебором отличается всего на 15%.

Как оптимизировать значение типа BOOLEAN ( 1|0 ) = TINYINT( 1 )?
Вроде бы, дело не в энтропии значений, получается.

Это сообщение отредактировал(а) tishaishii - 11.12.2016, 12:47
PM MAIL ICQ Skype   Вверх
Akina
Дата 11.12.2016, 22:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 453



Я чёта хреново понимаю, что тут делается... какие индексы. если селективность оных не меньше половины?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
tishaishii
Дата 16.12.2016, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Цитата(Akina @ 11.12.2016,  22:10)
Я чёта хреново понимаю, что тут делается... какие индексы. если селективность оных не меньше половины?

Ну что? Ответов нет?

PM MAIL ICQ Skype   Вверх
_zorn_
Дата 21.12.2016, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: 2
Всего: 12



Цитата(tishaishii @  17.12.2016,  05:21 Найти цитируемый пост)
Ответов нет?

Есть один. Но он вам не понравитса.
Со своими тараканами сами возитесь )

Вы скорей всего "эникей" который на все руки. Но это ваш выбор и т.п. 
С каждой ситуацией надо возитьса, разбиратьса и т.п. 
НИКТО этого не будет делать просто так (если ситуация не стандартная типа "поменяйте в конфиге")

Разбирать запросы - давно "нестандартная ситуация"
EXPLAIN перед запросом могу посоветовать. Не понятно - шуруйте к эксмертам. ВСЕ.
Рынок так работает.
PM MAIL   Вверх
Zloxa
Дата 21.12.2016, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3470
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



_zorn_, Не о чем тут разбираться, "возитьса". Ответ на вопрос дан (Хоть и оформлен как вопрос и совсем не разжёван). Для низкоселективных предикатов индексный доступ по B-Tree индексам не эффективен. B-Tree так работает. Bitmap индексов в MySQL нет. Все. Тут больше не о чем говорить, нечего понимать. К экспертам ходить не надо.

Это сообщение отредактировал(а) Zloxa - 21.12.2016, 21:27


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1135 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.