[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: оптимизатор таблицы БД
Dagot
Вот допустим имеет место таблица в 10тыс записей в которой есть поле uid(VARCHAR) примерно такого содержания 54hg543606yk9ff4346f55 (23 знака, и таких 10тыс)

и будет часто возникать задача найти определенный uid (
WHERE uid = {$uid}
)

я думаю для облегчения поиска поделить uid на 10 групп и тогда запрос будет
WHERE group = {$group} AND uid = {$uid}
тогда он будет пропускать все uidЫ из других групп тоесть сравнивать придется всего 1 цифру, а не 23, но зато придется использзовать лишнее условие (WHERE group = {$group})

так вот что будет проще процессору сравнивать 23 числа пока не найдет нужное котрое может быть в самом конце таблицы, или выполнять два условия но сравнивать 9тыс раз только 1 цифру а потом следующие 1000раз сравнивать данные в двух полях?



Спустя 17 минут, 45 секунд (28.04.2012 - 08:48) sergeiss написал(а):
Сделай индекс по этому полю и всё будет находиться быстро. А дополнительные условия (группы) тут не нужны будут.

Если ты сделаешь 2 условия и без правильной индексации, то время поиска только увеличится smile.gif Потому что всё равно будет последовательно всё сканировать, но сравнивать не одно поле, а два.

Спустя 4 минуты, 36 секунд (28.04.2012 - 08:53) Dagot написал(а):
Но ведь индекс будет состоять из большего числа цифр от от 1 и до 6-ти значного, тоесть сравнивать будет больше цифр, чем 1 (как задумал я)

Спустя 5 минут, 18 секунд (28.04.2012 - 08:58) killer8080 написал(а):
Цитата (Dagot @ 28.04.2012 - 09:53)
Но ведь индекс будет состоять из большего числа цифр от от 1 и до 6-ти значного, тоесть сравнивать будет больше цифр, чем 1 (как задумал я)

Dagot как ты думаешь, для чего придумали индексы? wink.gif

Спустя 1 минута, 59 секунд (28.04.2012 - 09:00) Dagot написал(а):
ну чтоб удобней было наверное искать запись)

Спустя 3 минуты, 33 секунды (28.04.2012 - 09:04) killer8080 написал(а):
Цитата (Dagot @ 28.04.2012 - 10:00)
ну чтоб удобней было наверное искать запись)

не удобней, а быстрей, по заданному полю, и это как раз то что тебе нужно (кстати 10к записей не такая уж большая таблица) smile.gif

Спустя 8 минут, 13 секунд (28.04.2012 - 09:12) Dagot написал(а):
я тут почитал, я думал всегда что автоинкрементное поле id и есть индексация... но это не так как я понял?

помоему этому форуму нужно проиндексировать таблицы biggrin.gif жутко тормазит, собака wink.gif

Спустя 26 минут, 11 секунд (28.04.2012 - 09:38) sergeiss написал(а):
Цитата (Dagot @ 28.04.2012 - 10:53)
тоесть сравнивать будет больше цифр, чем 1 (как задумал я)

Как задумал ты, будет сравнивать 23 знака + 1 цифру группы.

Ты вот еще сравни: перебрать все 10К записей (количество сравнений равно количеству строк) или найти по индексу (количество сравнений существенно меньше, чем количество записей).


_____________
аська 615-817, стучите начинающие прогеры, будем вместе прорываться)
Быстрый ответ:

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