Задавайте вопросы, мы ответим
Вы не зашли.
Подскажите, хочу создать временную таблицу CREATE TEMPORARY TABLE на основе выборки. Какой максимальны размер может быть таблицы, если я, к примеру из огромной таблицы (свыше 20 млн. срок) делаю выборку по определенным критериям и помещаю ее у временную таблицу. Какое количество строк может в ней содержаться (максимальное)? И насколько быстро затем смогу я обрабатывать запросы у временной таблицы? Спасибо!
Неактивен
на сколько хватит оперативной памяти, если мы говорим о таблицах MEMORY. Эти таблицы транзакции не поддерживают
Неактивен
Тоисть если оперативы у меня 2Г а каждая строка содержит приблищительно 200 байтов то 2Г/2байта получим кол-во строк временной талицы типа Мемори! Верно?
Неактивен
Есть запррос:
SELECT
prices.namezapch,
prices.numberkatalog,
prices.maker,
prices.price,
prices.valuta,
prices.deliverydate
FROM prices
INNER JOIN pricesAccess ON prices.idUser = pricesAccess.idUser
WHERE
pricesAccess.access = 1 AND
MATCH (prices.typeauto) AGAINST ('+Грузовые*' IN BOOLEAN MODE) AND
MATCH (prices.marka) AGAINST ('+Audi*' IN BOOLEAN MODE) AND
MATCH (prices.model) AGAINST ('+VH15*' IN BOOLEAN MODE) AND
MATCH (prices.namezapch, prices.numberkatalog) AGAINST ('+колонка*' IN BOOLEAN MODE);
В условии выборки есть такое выражение (MATCH (prices.model) AGAINST ('+VH15*' IN BOOLEAN MODE)). Мне нужно чтобы оно было необязательным, тоисть если есть значение модели значит включать его у фильтрацию, если нет - не включать. Как записать его у структуре запроса? Спасибо.
Неактивен
Временные таблицы могут быть и очень большими — при превышении
размера tmp_table_size они начинают сбрасываться на диск.
Несколько MATCH в таком случае работать не будут, будет работать
только один из них.
Неактивен
Почему несколько MATCH работать не будут? Как тогда сделать? Мне нужно будет провести выборку из таблицы по заданых критериях. К примеру есть таблица прайсов, в которые загружаются файлы, и по ней нужно будет сделать поиск по 4 ключовым словам которые указывает клиент (тип авто, марка, модель, название запчасти). Как тогда в этом случае быть? Напишите возможный запрос, плиз!
Отредактированно yuriy (29.04.2011 10:15:43)
Неактивен
Нужно нормализовать таблички и искать по обычным индексам. Идеология
полнотекстового индекса — один индекс над всей табличкой (точнее — над
всеми интересующими полями) и поиск по нему.
Неактивен
Тоисть мне нужно все 3 поля одной таблицы объеденить в один индекс
Неактивен
Если Вы хотите оставаться в рамках полнотекстового индекса, — да.
А по хорошему — нужно разбить табличку на несколько (марка, модель, ...)
и использовать их.
Неактивен
Понимаете в чем дело. Пользователи с помощью функции LOAD загружают свои прайсы в одну таблицу (одновременно невозможно загрузить файлы в несколько таблиц!!!), соответственно кол-во записей будет огромна...
Таблица содержит 9 столбцов (тип авто | марка | модель | код запчасти | и т.д.). Поэтому разбить таблицу на несколько других таблиц не получится. Приходится проводить поиск по одной таблице за 4-ма критериями (тип, марка, модель, название). Сначала создал FULLTEX для каждого столбца отдельно, создал запрос (указан выше) где существует несколько комбинация MATCH() - AGAINST() проверил в Workbench - вроде ищет. Но Вы говорите, что лутчше повесить полнотекстовый индекс на все 4 столбца и использовать выражение MATCH() - AGAINST() лишь один раз , так будет лутчше? Или как Вы посоветуете поступить? Просто хочеться как-то раз понормальному это все сделать чтобы было быстро и точно!!! Спасибо!
Неактивен
При выборке из таблицы MySQL может использовать только один индекс.
Если индекс при этом выбирает меньшее количество записей, то MySQL
нужно будет меньше времени потратить на отсеивание данных в памяти.
Так что да, один индекс над четыремя полями лучше четырех индексов
над одним полем.
Неактивен