|
|
|
| Таблица динамического формата MyISAM размером 150 М.
Когда я читаю строку используя PRIMARY KEY запрос занимает 2-6 секунд.
Проиндексировал один из текстовых столбцов. Когда выборка идёт по нему -
время выборки 0.06 секунд.
Что это получается: PRIMARY KEY вообще бесполезен?
Или у меня что-то с головой?
Зачем его вообще тогда придумали? Может бытьтолько для маленьких таблиц? | |
|
|
|
|
|
|
|
для: Eugene77
(25.01.2009 в 09:32)
| | Хм... а можно запросы увидеть? Вообще не должно бы такого быть. | |
|
|
|
|
|
|
|
для: cheops
(25.01.2009 в 13:08)
| |
CREATE TABLE `be` (
`num` int(4) unsigned NOT NULL auto_increment,
`key` varchar(200) NOT NULL ,
`describe` text NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
Отображает строки 69840 - 69869 (198,625 всего, запрос занял 6.2676 сек.)
SQL-запрос:
SELECT *
FROM `be`
LIMIT 69840 , 30
|
А второй (быстрый) запрос по индексированому столбцу:
SELECT *
FROM `be`
WHERE
`key` = 'нужное слово'
|
| |
|
|
|
|
|
|
|
для: Eugene77
(25.01.2009 в 19:55)
| | SQL-запрос SELECT * FROM `be` LIMIT 69840 , 30 - это вовсе не запрос по primary key .
Этот запрос заставляет извлечь эти 70 тысяч строк и выкинуть их. На это требуется время.
Запрос по primary key - нечто вроде
SELECT * FROM `be` WHERE `num` BETWEEN 69841 AND 69870
|
Вы explain выполняли? Он Вам сказал, что primary key применять будет? | |
|
|
|
|
|
|
|
для: Trianon
(25.01.2009 в 20:18)
| | Понятно!
Надо быть осторожным с MySQL.
Не надеяться на встроенный оптимизатор.
Спасибо! | |
|
|
|
|
|
|
|
для: cheops
(25.01.2009 в 13:08)
| | ///// | |
|
|
|