Светлана Сененко (turtle_t) wrote,
Светлана Сененко
turtle_t

Categories:

Рабочее (кое-какие странности SQL Server'а)

В общем, это может быть интересно разве что коллегам по специальности data analyst, да и то, только тем, кто работает вплотную с SQL Server-ом. Особенная надежда у меня в этом смысле на новую френдессу uro_da :) и на "старую" френдессу gem_in_i. Может, есть и другие спецы по этому делу у меня во френд-ленте, а я просто не знаю, так что колитесь :). Короче, нашла я что-то типа "бага", точнее, "неприятной особенности" SQL Server'а, которую пока что просто обошла :)

Речь идёт о SELECT query, где соединяются (JOIN) две больших таблицы, и есть условие по колонке в одной из них, чтобы значения были в неком интервале. Эта колонка -- даты (datetime). Так вот, когда используешь операнд BETWEEN, то этот запрос работает бесконечно, даже если запрашиваемый период -- всего два дня. А ежели вместо BETWEEN поставить IN и задать массив дат (перечислить нужные), то результат получается за секунды. Пока что не знаю, как заставить эту хрень работать быстро с BETWEEN... Может, кто знает?...

В гугле искала, как и ожидалось, проблема такая возникает не только у меня, но пока что мне попались только случаи, когда народ имел дело с данными типа INTEGER, да и решал проблему тоже обходными манёврами...

На всякий случай: индекс по этой колонке есть.

И ещё один прикол. Раньше эта хрень таки работала и с BETWEEN. Долго (от получаса до трёх часов непрерывной работы), но результат всё-таки выдавала. А потом перестала вообще :) За это время произошли две вещи. Во-первых, таблицы немного выросли (они каждый день растут). А во-вторых, одна из таблиц была убита и восстановлена -- вроде бы в первозданном виде, а там, кто его знает... Это делала не я, а программа, которую нам продают вместе с данными.

Апдэйт: Докладываю :) Убила я этот индекс в такой-то бабушке и тут же создала новый, такой же, но не золотой, а простой. И эта хрень заработала с BETWEEN так же быстро, как с IN. Ура! Великая победа китайского народа! :)))) Всем откликнувшимся огромное спасибо!!!

Вывод-урок на будущее: когда индекс начинает делать вид, что его нет, надо его и впрямь извести по-настоящему и потом сделать заново!
Tags: вопрос, работа
Subscribe

  • Про вчерашние выборы

    Хоть "моя" кандидатка даже в первую пятёрку не вошла, зато выбрали честно и, я бы сказала, вдохновенно. Под катом пару ссылок на особенно тронувшие…

  • Strawberry Fields Forever

    Вместо цветочков поделюсь ягодками -- сезон как-никак: Украдено Взято отсюда: Strawberry Fields Forever

  • Одри Хепберн (добавка с картинками )

    В комментах к моему недавнему посту френдесса заметила, что Одри Хепберн с возрастом стала красивее, чем в молодости. Поскольку сейчас на украинском…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 24 comments

  • Про вчерашние выборы

    Хоть "моя" кандидатка даже в первую пятёрку не вошла, зато выбрали честно и, я бы сказала, вдохновенно. Под катом пару ссылок на особенно тронувшие…

  • Strawberry Fields Forever

    Вместо цветочков поделюсь ягодками -- сезон как-никак: Украдено Взято отсюда: Strawberry Fields Forever

  • Одри Хепберн (добавка с картинками )

    В комментах к моему недавнему посту френдесса заметила, что Одри Хепберн с возрастом стала красивее, чем в молодости. Поскольку сейчас на украинском…