SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 30.06.2009 18:12:26

wildew
Участник
Зарегистрирован: 30.06.2009
Сообщений: 1

поиск по таблице с отсортированными значениями, как ускорить SELECT?

приветствую.
может, кому-то вопрос покажется идиотским, но всё же...

есть таблица:

Код:

CREATE TABLE wd (ID INTEGER PRIMARY KEY,
word VARCHAR[40], 
description TEXT);

есть индекс:

Код:

CREATE INDEX Word_index ON wd (word);

так вот, как указать интерпретатору mySQL, что значения поля word уже отсортированы по алфавиту?
возможно ли это?
и даст ли это выигрыш в скорости SELECT по word?
если нет, то как еще можно ускорить выборку?

Неактивен

 

#2 01.07.2009 20:32:33

Наборбукв
Участник
Зарегистрирован: 01.07.2009
Сообщений: 1

Re: поиск по таблице с отсортированными значениями, как ускорить SELECT?

Я уже эксперементировал с индексами при наличии в таблице 10000 записей поиск нужной осуществляется в 10 раз быстрее. А зачем create index? Не проще ли при создании таблицы объявлять индексы?

CREATE TABLE `comments` (
                                 `id` INT( 255 ) NOT NULL AUTO_INCREMENT ,
                                 `theme_id` INT( 255 ) NOT NULL ,
                                 `cat_id` INT( 255 ) NOT NULL ,
                                 `uid` INT( 255 ) NOT NULL ,
                                 `author` VARCHAR( 25 ) NOT NULL ,
                                 `datetime` VARCHAR( 25 ) NOT NULL ,
                                 `ip` VARCHAR( 25 ) NOT NULL ,
                                 `comment` VARCHAR( 1024 ) NOT NULL ,
                                 INDEX ( `id` ) ,
                                 INDEX ( `theme_id` ) ,
                                 INDEX ( `cat_id` ) ,
                                 INDEX ( `uid` )
                                 ) CHARACTER SET cp1251 COLLATE cp1251_general_ci

Неактивен

 

#3 03.07.2009 02:30:53

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: поиск по таблице с отсортированными значениями, как ускорить SELECT?

Объявлять индексы внутри создания таблицы или отдельно — не имеет никакого
значения, конечно.

Если над колонкой есть индекс, то в принципе совершенно не важно — сортированы
там данные или нет. Объяснить серверу это никак нельзя (хотя и можно отсортировать
табличку по какой-то колонке, сервер эту информацию никак использовать не
сможет).

Ускорить выборку по ключу у Вас тоже вряд ли получится. Можно попробовать делать
индекс не по всей строке, а, например, по подстроке (ADD INDEX (word(20))) — индексы
так будут чуть короче и, возможно, вы сможете выиграть несколько микросекунд (а
можете и потерять, все зависит от данных), но, кажется, такие микрооптимизации
могут быть полезными только теоретически — практически разницы Вы не заметите.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson