[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Индекс и больше/меньше
GET
Привет. Как можно сделать.

Есть таблица:int /enum(0,1)/decimal/enum(0,1)/int): 10 тысяч строк

user posted image

Нужно построить составной индекс по последним 3-м полям:

decimal/enum(0,1)/int), проблема в том, что decimal почти всегда унакльный столбец и доступ к decimal полю будет не decimal=2555, а decimal>1000, причем всего 6 вариантов:
>0.00
>1000
>2000
>3000
>4000
>5000

Так вот, можно создать дополнительный столбец типа enum(0,1000,2000,3000,4000,5000,6000) по которому и вести сортировку, но мне кажется это лишнем ведь столбец уже и инфа будет дублироваться.

Вопрос:

Можно ли в MySQL создать такой пространственный что-ли индекс, который будет делить поле как-бы по областям т.е. в запросе >3000 он сразу перейдет к просмотру 3-х кусков у следующего столбца enum(0,1).
>3000 AS 3
>4000 AS 4
>5000 AS 5
который будет привязан не к 3500, а к 3, не...1200, а к 1...

Не будет искать 3001, 4006....и т.д.

Незнаю даже как вопрос сформулировать правильно. Короче индекс привязать не к строкам, а к GROUP BY строк. smile.gif по определенном признаку.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
glock18
ABC
ну, вы покажите запрос, под который оптимизировать надо структуру, а там уж посмотрим
GET
glock18

SELECT `id` FROM `tab` WHERE `decimal`>'0.00' AND `enum`='1' AND `int`=20;


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
glock18

Запрос может начинаться либо
 WHERE `decimal`>'0.00' AND `enum`='1' AND `int`=20;

либо
 WHERE `decimal`='0.00' AND `enum`='1' AND `int`=20;

но decimal слишком уникален...для составного индекса начинающегося с decimal будет слишком долгий перебор строк.

Да, могу создать столбец с ключом:0/1 === "=0.00"/">0.00", но столбец не хочу.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
glock18
ABC
Вам же нужны все id, где decimal удовлетворяет условию при прочих равных? В этом случае хоть как с индексами изворачивайтесь, все равно эти строки придется прочитать.

Другое дело, если индекс неправильный. Покажите create table мне и результат explain этого запроса.
GET
glock18

Ладно спасибо...я решил все же создать дополнительный столбец и не заморачиваться особо.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
glock18
Цитата (ABC @ 31.05.2013 - 11:01)
glock18

Ладно спасибо...я решил все же создать дополнительный столбец и не заморачиваться особо.

Ну, как знаете.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.