Низкая производительность Опрос таблицы 8 ГБ с большими столбцами и множеством строк - PullRequest
0 голосов
/ 10 марта 2011

У меня есть таблица с MySQL 4, и у таблицы есть такая схема:

itemId int
essay longtext
dateCreated timestamp
creatorId int

Большинство этих эссе представляют собой очень большие вставки из MS Word (вспомните мегабайтные эссе).Я пытаюсь запросить эту таблицу, чтобы просто определить, кто представил эссе в определенный период времени.Мой первый подход к этому запросу был:

select creatorId from stories where dateCreated >= '2011-03-09 11:00:00';

Это должно вернуть только около 10-20 результатов.К сожалению, выполнение запроса заняло более 10 минут (так как общий размер таблицы составляет 8 ГБ с 100 000 строк).Столбец dateCreated имеет индекс.

Как повысить производительность этого запроса?

1 Ответ

0 голосов
/ 10 марта 2011

Еще раз посмотрев на свой стол, я понял проблему. Мой индекс был создан неправильно. У меня на самом деле есть другие метаданные в этой таблице (например, dateLastUpdated и утвержденный логический). Когда я выполняю поиск наподобие «где dateLastUpdated = x и Approved = true и dateCreated> = y», будет полезен индекс из трех столбцов в полях. Похоже, мне нужно будет создать группу индексов на этой таблице. Надеюсь, мне не повредит производительность вставки, если у меня слишком много индексов. Извините, что беспокою всех.

...