Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Когда не нужен дополнительный ключ?
 
 автор: Eugene77   (07.12.2007 в 08:35)   письмо автору
 
 

Когда читаю документацию по MySQL, не возникает уверенности, что правильно её понимаю.

Правильно я сделал вывод, что самый быстрый запос SELECT выглядит примерно так:
SELECT * FROM mytable WHERE id=230 or id=890 or id=8046 or id=16 ...
где id - это primary key?

То есть у меня есть два варианта выбрать нужный мне набор строк.
1) Воспользоваться значением в одной из колонок таблицы одинаковым для нужного мне набора строк

SELECT * FROM mytable WHERE common=45

2) Перечислить все primary key этих строк, которые на данном этапе выполнения скрипта мне тоже известны.

SELECT * FROM mytable WHERE id=230 or id=890 or id=8046 or id=16 ...


Как будет быстрей и лучше, при том, что строк не много - несколько десятков, не больше 50.

Можно ведь ещё ввести дополнительный ключ для ускорения запроса, но в таблицу довольно часто добавляется строки, всего раз в 50 реже, чем извлекаются.

Можно ли так сказать: когда есть возможность обращаться через primary key, то другие ключи создавать нет смысла?

   
 
 автор: Faraon   (07.12.2007 в 08:58)   письмо автору
 
   для: Eugene77   (07.12.2007 в 08:35)
 

Вообщем да.

   
 
 автор: Trianon   (07.12.2007 в 09:07)   письмо автору
 
   для: Eugene77   (07.12.2007 в 08:35)
 

не изобретайте велосипед.
Создайте индекс на common и посмотрите так ли уж сильно упадет скорость.
Я уверен, что Вы ничего такого не заметите.

Выкорчевывать первичные ключи средствами прикладного уровня будет еще медленнее всяко.

   
 
 автор: Eugene77   (07.12.2007 в 18:25)   письмо автору
 
   для: Trianon   (07.12.2007 в 09:07)
 

Спасибо за ваши советы!
Мне главное было услышать, что я ничего по-крупному не путаю.
А раз значительной разницы в скорости нет, то буду оптимизировать по размеру.
(Не могу я не оптимизировать, нравится мне)
Ключи, я читал, большие получаются.
Тем более к крупным таблицам привешивать их придётся, а альтернатива: денормализация маленькой таблицы (вдвое увеличится, но всё равно она раз в тридцать меньше).
Так что, может быть, иногда имеет смысл, Выкорчевывать первичные ключи средствами прикладного уровня ?

   
 
 автор: Trianon   (07.12.2007 в 19:49)   письмо автору
 
   для: Eugene77   (07.12.2007 в 18:25)
 

Еще раз. Попробуйте. Посмотрите, что получится.
А в теории мне нечего Вам ответить.
Для того чтобы советовать конкретные решения по оптимизации, опираясь на такой минимум исходных данных, и лишь исходя из теоретических предпосылок - я еще недорос. Или перерос, если хотите.

   
 
 автор: Eugene77   (08.12.2007 в 18:29)   письмо автору
 
   для: Trianon   (07.12.2007 в 19:49)
 

Ну, что ж, спасибо и на том!
В принципе информ-минимум я по вопросу получил.
Хотя по-прежнему смущает меня некоторая пустота в разделе информации
по проектированию баз с позиции их максимальной производительности и компактности.
Получается - нет ясных ориентиров, чтобы сравнить между собой различные варианты ещё на этапе проектирования.

P.S.
Подумалось сейчас. Может задачку какую-то сочинить.
Чтобы много вариантов структуры базы напрашивалось, а потом сравнить решения по эффективности.
Думаю, это, для меня во всяком случае, многое могло бы прояснить.
Но мне за сочинение задачки пока не стоит браться - объём знаний по MySQL ещё пока маловат, а для сочинения толковых задачек широкий кругозор просто необходим.
А может и не стоит, будем писать как в голову взбредёт.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования