Как оптимизировать запрос к MySQL ( 200 000 записей)

  • Автор темы Автор темы general
  • Дата начала Дата начала
alexhemp
ты не слышал о типе поля char?

-~{}~ 24.02.06 16:58:

general
поисковики - понятно. это отдельный вопрос.

а вот про людей - это уже интересно. сколько времени эти люди затрачивают на просмотр одной страницы в среднем?
 
Фанат

Я то слышал.
Только вот имена, отчества и даже фамилии имеют тенденции повторятся. А в справочнике уже пофиг, char или varchar, там выборка по индексу (первичному ключу).
Другой вопрос - сколько записей будет на страницу базы.
На моей практике - чем меньше размер одной записи - тем быстрее выборка.
 
что-то ты непонятное пишешь.
тописал про фиксированность размера , а теперь - про сам размер.
 
Фанат

Мне с тобой спорить недосуг.

Моя рекомендация - сделать полную нормализацию базы. Это приведет к тому что основная таблица будет содержать только ссылки на справочники.

Размер записи уменьшиться, на одну страницу файла БД (не вывода) будет попадать больше записей, что уменьшит количество операций чтения с диска при сканировании данной таблицы.

Извини, Фанат, если пишу не понятно для тебя. Но может автору топика будет понятно?
 
Создайте справочники имен, отчеств и фамилий. В основной базе заведите ссылки на них. И будет Вам счастье.

Хороший Вам провайдер попался. Мог бы и просто выгнать за подобный стиль написания.
 
ну нормализация конечно должна помочь
работать с записями ключей бустрее чем с записями-строками, НО
ему же всё равно придётся делать JOIN с таблицами справочниками, там то тормоза не возникнут?
 
Все джойны будут использовать индексы, должно быть очень быстро.
 
Непонятно. Хостер ругается и на такой запрос:

SELECT id, name, surname FROM table ORDER BY id ASC LIMIT 163126, 80

ID - это первичный ключ, mediumint(9).

В чем дело??? Неужели 200 тыс записей - это много? Для простенькой сортировки по ключу? Хостер известный. Из 1-ой десятки. Последнее время часто присылает рекламу про VDS.
 
сортировка тут не при чём
об этом тебе уже сказали неделю назад
 
На локальном компьютере:

SELECT id, name, surname FROM table ORDER BY id ASC LIMIT 163126, 80
= 0,2 сек

SELECT id, name, surname FROM table LIMIT 163126, 80
= 0,02 сек
 
Автор оригинала: general
На локальном компьютере:

SELECT id, name, surname FROM table ORDER BY id ASC LIMIT 163126, 80
= 0,2 сек

SELECT id, name, surname FROM table LIMIT 163126, 80
= 0,02 сек
Долговата и та и другая цифра...

Прямо сейчас посмотрел, правда на выделенном серваке - запрос с джойнами 3-х таблиц, ордером и лимитом, похожим на твой - 2 из них в районе 8 млн записей... 0.007 секунд...
 
Сверху