Задавайте вопросы, мы ответим
Вы не зашли.
Товарищи подскажите, как лучше сделать таблицу. В таблице должны храниться данные в виде журнала, примерно так
______
|id клиента| id товара |
| 1 | 2 |
| 2 | 1 |
| 1 | 2 |
то есть нужно что то вроде журнала куда будут падать id юзеров и id допустим товаров. Получается что таблица остается без первичного ключа. Чем все это чревато? И может есть способ сделать все это по человечески?
Неактивен
а почему первичный ключ не повесить на id клиента?
по первичному ключу быстрее происходит выборка,обновление,удаление и вставка строк
Отредактированно simple (28.01.2012 20:15:24)
Неактивен
А зачем он нужен в данном случае?
Единственное уточнение - стоит делать таблицу myisam в этом случае.
Неактивен
vasya написал:
А зачем он нужен в данном случае?
Единственное уточнение - стоит делать таблицу myisam в этом случае.
Почему MyISAM? Я туды и записывать часто буду и читать ее.
Неактивен
update ведь делать не будете?
А только insert возможен одновременно с чтением для myisam. Innodb всегда имеет первичный ключ и даже если вы его не создаете, innodb создаст свой внутренний, т.е. таблица будет занимать больше места.
Неактивен
simple написал:
а почему первичный ключ не повесить на id клиента?
Потому, что он не уникален.
simple написал:
по первичному ключу быстрее происходит выборка,обновление,удаление и вставка строк
Только для innodb, у которого индексы содержат указатели не на данные, а на первичный ключ.
Неактивен
vasya написал:
update ведь делать не будете?
А только insert возможен одновременно с чтением для myisam. Innodb всегда имеет первичный ключ и даже если вы его не создаете, innodb создаст свой внутренний, т.е. таблица будет занимать больше места.
Блин а я всегда считал что, MyISAM нужно использовать только если преобладает запись в таблицу а в остальных случаях лучше InnoDB.
Еще маленький момент SELECTов будет примерно на 30-40% больше чем INSERTов. UPDATEов вообще не будет. Про отсутствие PK в InnoDB я нарыл что
"InnoDB хранит данные с первичным ключами, так что поиск по первичным ключам происходит очень быстро. Данный подход очень полезен для физической оптимизации БД. В случае когда он не применим и дает низкую производительность, то явно его можно не использовать и тогда система создаст невидимый внутренний первичный ключ типа Integer(15) и будет проводить индексацию по нему."
Неактивен
zloymudvin написал:
Блин а я всегда считал что, MyISAM нужно использовать только если преобладает запись в таблицу а в остальных случаях лучше InnoDB.
MyISAM нужно использовать если преобладает чтение.
Насчет одновременного insert и чтения я немного ввел вас в заблуждение. Это будет работать только в один поток, а одновременные записи из разных потоков будут блокировать всю таблицу.
Неактивен
vasya написал:
zloymudvin написал:
Блин а я всегда считал что, MyISAM нужно использовать только если преобладает запись в таблицу а в остальных случаях лучше InnoDB.
MyISAM нужно использовать если преобладает чтение.
Не могу согласиться InnoDB у меня выборку делает почти в двое быстрее. Только что попробовал на тестовой таблице с тремя миллионами записей (без индексов по искомым полям)
SELECT на InnoDB 1.7 sec
SELECT на MyISAM 2.3 sec
Неактивен