1. SQL / Говнокод #3330

    −854

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Select  *
    From Table1
    Where ( 
                   (id = 2000)
                        or
                    id = ( Select max(id) from Table1 )
                  )

    а я дивувався, чому цей код в табличці > 300 000 записів виконується так довго ...

    Запостил: O_O, 26 Мая 2010

    Комментарии (15) RSS

    • Сiтвиц за мусосату)
      Ответить
    • таку мову я ни разумию
      Ответить
    • а что плохого? не понятно зачем ид=2000, хотя возможно есть своя логика, но я так понимаю, что претензия направлена к вложенному селекту.
      Ответить
    • да, и с каких это пор таблица порядка 300 тыс записей стала считаться большой?
      Ответить
      • а хто казав, що 300000 це багато ?! Я просто написав, що при таких даних дуууже довго виконувалася , а що це велика таблиця -- не писав.
        Ответить
    • المادة على الكلاب
      Ответить
    • Ахчесин сюбар лят вер
      Ответить
    • а по сути как правильно выбрать максимальный id ?
      Ответить
    • Нормально он выберется если индексы правильно стоят
      Ответить
    • EXPLAIN SELECT * 
      FROM `Message95` 
      WHERE Message_ID =22
      OR Message_ID = ( 
      SELECT MAX( Message_ID ) 
      FROM Message95 )


      id  select_type  table      type   possible_keys  key      key_len  ref   rows  Extra 
      1   PRIMARY      Message95  range  PRIMARY        PRIMARY  4        NULL  2     Using where
      2   SUBQUERY     NULL       NULL   NULL           NULL     NULL     NULL  NULL  Select tables optimized away

      ЧЯДНТ?
      Ответить

    Добавить комментарий