Одни и те же данные для разных ключей в таблице занимают много времени - PullRequest
0 голосов
/ 25 марта 2011

У меня есть таблица ...

FactorID, col1 col2     Factor Value
1         a     2        1231
1         b     3        2342
2         a     2        1233
2         b     3        2344

Это значит ... Для фактора Id 1 у меня 1500 записей ... и для фактора I 2 у меня такое же количество записей.

Для Factor Ids 1 и 2 все значения одинаковы, кроме «Factor Value».

Когда я соединяю приведенную выше таблицу с некоторыми другими таблицами для извлечения данных ... FactorID 1 дает мне быстрые результаты ... но когдаЯ запрашиваю "2" ... исполнение никогда не заканчивается.

Мне кажется, это странный ужас.Это связано с блокировкой строк?Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 25 марта 2011

Возможно, соединение использует сканирование таблицы. Проверьте, есть ли у FactorID индекс. Результаты, которые вы видите, могут быть следствием того, что записи FactorID 1 сначала находятся в таблице, а когда дело доходит до FactorID 2, они пропускают записи для FactorID1 одну за другой, пока не дойдут до FactorID 2.

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

Когда я соединяю таблицу выше с некоторыми другими таблицами для получения данных ... FactorID 1 дает мне быстрые результаты ... но когда я запрашиваю "2" ... выполнение никогда не заканчивается.


Вау, это очень мало говорит.

Ответ зависит от трех вещей.

  1. Как определяются ваши таблицы?
    • У вас есть первичные ключи? Какие столбцы являются ключами? Если в таблице, показанной выше, есть только два значения «FactorID», это будет плохим выбором для первичного ключа.
    • Индексируются ли другие столбцы?
    • У вас есть столбцы с именами "col1" и "col2"? Или вы просто говорите «имена не имеют значения»?
    Имеет значение и то, как определяются ДРУГИЕ таблицы. У них есть ключи?
  2. Какой тип данных содержится в таблицах? Сколько строк?
  3. Самая важная вещь: что вы подразумеваете под "когда я соединяю стол с некоторыми другими столами"? Сколько таблиц объединяется? Как вы делаете соединения?

Плюс, вы говорите, что ваш запрос "никогда не заканчивается" - как долго вы ждали?

Извините, но нам нужно МНОГО дополнительной информации, прежде чем можно будет дать значимый ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...