MySQL 4.1->вложенный запрос->bugs

Demiurg

Guest
три поля - три индекса, все нормально :))
можно еще составных наделать
 

Найч

Алгоритмик :-)
Код:
CREATE TABLE customers (
  serial int(11)  DEFAULT '' NOT NULL auto_increment,
  CustID int(11)    ,
  Item1 varchar (33) not null,
  Item2 varchar (33) not null,
  Touched datetime    ,
  PRIMARY KEY (serial),
  UNIQUE serial (serial, Item1, Item2),
  KEY serial_2 (serial, Item1, Item2)
);
Ну вы даете... немного более расширенный вариант выглядит так, раз уж вам так это важно (хотя в топике я подчеркнул не это!!!) При создании маленького варианта таблички специально для этого форума по привычке нажал на три галочки, как верно заметил ONK (благодярю за понимание). ВСЕ! Вопрос-то звучал, а по сути было только пару ответов, остальные - варианты на тему "ты еще ламер". Пусть бы и ламер к вам пришел, неужели так необходимо показать свое превосходство? :confused:
Извините, если кого обидел.
 

tony2001

TeaM PHPClub
Найч

тебе говорят:
Индексы у тя жутко умные, может расскажеш зачем каждый из них нужен?
тебе говорят:
Индексы действительно интересные. Моих мозгов явно не хватает понять, зачем нужна такая структура.
ты говоришь:
2 fixxxer - послушай, а твоих мозгов хватит предположить, что это небольшая вырезанная часть дампа? И если такие индексы, то для чего-то они нужны. Немного вежливей отвечай, если можно.
тебе говорят:
такие индексы не могут быть нужны.
ты говоришь:
Я считаю, что такая комбинация индексов мне полезна. Если вы покажете несостоятельность сего действа, буде только благодарен вам.
ты говоришь:
чтоб вас не мучили догадки по поводу тех индексов - назовем это привычкой
ты умеешь отличать *иронию* от "доказывания своего превосходства"?
дело не в том, что "Вопрос-то звучал, а по сути было только пару ответов".
дело в том, что тебя спросили "зачем так делаешь?", а ты вместо признания "а я не знаю как правильно. подскажите как." начал выкручиваться в стиле "я так привык", "а докажите, что так не надо".
так что ирония в данном случае вполне уместна.
и тот факт, что ты пытаешься встать в позу после такой мелочи говорит не в твою пользу.
 

Найч

Алгоритмик :-)
2 tony2001 Что-то в твоих словах есть. Но не со всеми из них я согласен. Например, фразу
Индексы действительно интересные. Моих мозгов явно не хватает понять, зачем нужна такая структура.
не могу признать вопросом "зачем ты так делаешь". Потому как в начале просил не обращать на это внимание, уделив внимание интересующему вопросу. Мне говорят
такие индексы не могут быть нужны.
НО не было сказано, ПОЧЕМУ. При всем уважении, пересмотрев документацию на эту тему, не смог найти случая, когда бы UNIQUE и KEY замедляли бы скорость выборки. Размер базы в моем случае не критичен, важна скорость. Небольшая выдержка из мануала
Код:
Если данная таблица имеет многостолбцовый индекс, то любой крайний слева префикс этого индекса может использоваться оптимизатором для нахождения строк. Например, если имеется индекс по трем столбцам (col1,col2,col3), то существует потенциальная возможность индексированного поиска по (col1), (col1,col2) и (col1,col2,col3).
Я предполагаю, что имея KEY индекс по трем столбцам (два из которых проиндексированы по префиксу) увеличиваю скорость выборки. Предполагаю, что поиск по проиндексированному префиксу несколько быстрее аналогичного при полной индексации символьного поля. Также не исключаю, что индексации по префиксу может быть недостаточно (повторюсь, размер мне не важен), почему добавляю полную индексацию уникальности записи по трем полям. Полагаю, что пояснил, зачем я так делаю. Прошу вас показать мои ошибки.
Кстати, tony2001, в твоем мессаге ты сказал, что ирония уместна в случае "моего выкручивания". Почему я не согласен - пока что не вижу выкручивания, я добивался дискуссии по сути вопроса; "ирония" появилась ДО ТОГО, как я написал второй свой мессаг, не учитывая предусловия. Надеюсь, мы поняли друг друга
 

Найч

Алгоритмик :-)
Простите за неграмотность, но в каком случае этот форум ведет себя так? дабы не "растягивать" его так в дальнейшем))
 

tony2001

TeaM PHPClub
>НО не было сказано, ПОЧЕМУ.
>При всем уважении, пересмотрев документацию на эту тему, не смог найти случая
дело в том, что это даже не относится к MySQL, это основы БД.
PRIMARY - это и есть уникальный индекс, с тем отличием, что PRIMARY может быть только один в таблице, а просто уникальных может быть несколько.

а ты создаешь PRIMARY + UNIQUE(еще один уникальный индекс по тому же полю) + INDEX(просто ключ).
теперь понятна вся бессмысленность сих действий и причина удивления остальных?
 

Найч

Алгоритмик :-)
2 tony2001 Принцип, которым я руководствовался: "При добавлении лишних индексов скорость не уменьшиться". Увеличиться или нет при этом - достоверно знать не могу, но если хуже не будет, а может быть только лучше, то не вижу причин этого не делать, как бы это не выгдядело с точки зрения проэктирования БД. Почему использовал три типа индексов, поянил. Тогда возникает вопрос - верно ли мое утверждение с вашей точки зрения? Если не сложно, с обоснованием.
 

Demiurg

Guest
> "При добавлении лишних индексов скорость не уменьшиться"
это не правильный принцип. На поиск в индексе тоже тратится время, иногда оно больше, чем время простого перебора, иначе можно было просто автоматом ставить на все поля индексы.

Но первоначально общественность обратила внимание не на это, а на то, что ты создаешь три индекса, два их которых не несут смысла. Мало того, оптимезатору каждай раз приходится думать, зачем это три индекса ? и каждый раз он выбирает какой использовать. Имеем отрицательный результат при положительных действиях.
 

Найч

Алгоритмик :-)
Ну дык опять вернулись к старому :) Я же попросил тогда не обращать внимание на смысл индексов - меня проигнорировали и сделали упор на то, что это бред.
Теперь по существу. Я с действиями оптимизатора по индексам не совсем знаком, если можно, скажите в каком направлении лучше двинуться.
На поиск в индексе тоже тратится время, иногда оно больше, чем время простого перебора
Согласен, такие случаи бывают. В моем случае таблица содержит порядка нескольких десятков тысяч записей со скоростью роста порядка 30000 в год. Думаю, полный перебор займет на порядок больше времени, чем индексация, причины которой я обосновал раннее. Также думаю, что движку не прийдеться перебирать более 30% индексов в общем случае (если не ошибаюсь, такие цифры приводились в мануале). Тут достаточно скользкая ситуация по поводу того, как быстрее будет база заводиться - с лишними индексами или без оных. Проверял на примере в 30000 записей. Замедления не заметил, а подозрения на увеличение скорости выборки с использованием медленных условий по типу LIKE есть.
Но спасибо за пояснения.
ЗЫ. ОБЩЕСТВЕННОСТЬ! Спасибо, что вы, видя нелогичный код, пытатесь это донести до автора. НО! Примите во внимание мою просьбу :rolleyes:
 

ONK

Пассивист PHPСluba
Найч, я тебе ещё в первом своём посте намекнул что индексы, которые ты создаёш в данной таблице, есть чистый бред (колько бы в ней ещё небыло столбцов).
Просто больше НЕ ДЕЛАЙ ТАК.
Никто тебе не будет разжевывать те элементарные вещи с которыми ты пытаешся спорить, но поверь твои посты выглядят весьма смешно...
 

Найч

Алгоритмик :-)
2 ONK Что ж, тогда тему в юмор)) Я постараюсь пересмотреть свое видение данного вопроса. Ваши последние посты и первоначальные вызывают абсолютно противоположную реакцию, поэтому желаю вам просто отвечать так же и в дальнейшем - никаких конфликтов не будет.
 

tony2001

TeaM PHPClub
>Простите, а у вас в Эстонии часто думают? Может, я не поспеваю за вами?
очень зря.
грубить не стОит.
 

chira

Новичок
Автор оригинала: Найч
Простите, а у вас в Эстонии часто думают? Может, я не поспеваю за вами? :(
судя по твоим постам, ты отстал от всех на несколько кругов, а тебе кажется, что бежишь самым первым. :)
 

Найч

Алгоритмик :-)
2 tony2001 По-моему, дискуссия плавно перетекла из тематической в лингвистическую)) Подчеркну, что ни в коем разе не хочу говорить что-либо негативное (всякое совпадение считать случайным:)). Пора закрывать этот бесполезный спор ни о чем.
Кстати, уже очень много сказано в разных местах об искусстве грамотно задавать вопросы, но мне не попадались работы о грамотном ответе. Может стОит задуматься о культуре ответов?
 

tony2001

TeaM PHPClub
>Кстати, уже очень много сказано в разных местах об искусстве грамотно
>задавать вопросы, но мне не попадались работы о грамотном ответе. Может
>стОит задуматься о культуре ответов?

на грамотный вопрос будет грамотный ответ.
а пока, извини, вопрос в стиле "как вот эту штучку запиндосить вот в эту закорючку", естественно, ни у кого желания нет отвечать, есть только желание постебаться.
 
Сверху