|
|
|
|
|
для: Trianon
(07.12.2007 в 19:49)
| | Ну, что ж, спасибо и на том!
В принципе информ-минимум я по вопросу получил.
Хотя по-прежнему смущает меня некоторая пустота в разделе информации
по проектированию баз с позиции их максимальной производительности и компактности.
Получается - нет ясных ориентиров, чтобы сравнить между собой различные варианты ещё на этапе проектирования.
P.S.
Подумалось сейчас. Может задачку какую-то сочинить.
Чтобы много вариантов структуры базы напрашивалось, а потом сравнить решения по эффективности.
Думаю, это, для меня во всяком случае, многое могло бы прояснить.
Но мне за сочинение задачки пока не стоит браться - объём знаний по MySQL ещё пока маловат, а для сочинения толковых задачек широкий кругозор просто необходим.
А может и не стоит, будем писать как в голову взбредёт. | |
|
|
|
|
|
|
|
для: Eugene77
(07.12.2007 в 18:25)
| | Еще раз. Попробуйте. Посмотрите, что получится.
А в теории мне нечего Вам ответить.
Для того чтобы советовать конкретные решения по оптимизации, опираясь на такой минимум исходных данных, и лишь исходя из теоретических предпосылок - я еще недорос. Или перерос, если хотите. | |
|
|
|
|
|
|
|
для: Trianon
(07.12.2007 в 09:07)
| | Спасибо за ваши советы!
Мне главное было услышать, что я ничего по-крупному не путаю.
А раз значительной разницы в скорости нет, то буду оптимизировать по размеру.
(Не могу я не оптимизировать, нравится мне)
Ключи, я читал, большие получаются.
Тем более к крупным таблицам привешивать их придётся, а альтернатива: денормализация маленькой таблицы (вдвое увеличится, но всё равно она раз в тридцать меньше).
Так что, может быть, иногда имеет смысл, Выкорчевывать первичные ключи средствами прикладного уровня ? | |
|
|
|
|
|
|
|
для: Eugene77
(07.12.2007 в 08:35)
| | не изобретайте велосипед.
Создайте индекс на common и посмотрите так ли уж сильно упадет скорость.
Я уверен, что Вы ничего такого не заметите.
Выкорчевывать первичные ключи средствами прикладного уровня будет еще медленнее всяко. | |
|
|
|
|
|
|
|
для: 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, то другие ключи создавать нет смысла? | |
|
|
|
|