|
|
|
| Сделала на сайте лайк/дизлайк систему. И создала таблицу.
CREATE TABLE IF NOT EXISTS `likes` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`userid` int(10) NOT NULL,
`userid2` int(10) NOT NULL,
`postid` int(10) NOT NULL,
`date` int(10) NOT NULL,
`type` enum('like','dislike','none') NOT NULL DEFAULT 'like',
`typedata` enum('materials','messages') NOT NULL DEFAULT 'materials',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=167 ;
|
где
id - уникальный индентификатор
userid пользователь который сделал лайк
userid2 - пользователь который разместил пост и по этому посту делают лайки.
postid - идентификатор поста где ставят лайки
date - дата когда пользователь поставил лайк.
type - тип голосования принимает три значения лайк дизлайк и none
typedata - данные которые лайкает пользователь это могут быть статьи или комментарии.
И теперь у меня вопрос сколько записей может хранить одна таблица, учитывая что один лайк это запись в таблицы? И какие могут быть еще рекомендации по хранении больших объемов информации в одной таблицы? | |
|
|
|
|
|
|
|
для: Elena91
(10.01.2017 в 05:37)
| | Храниться данных в mysql может очень много, у вас столько не наберется. Совет - все id сделать индeксами. | |
|
|
|
|
|
|
|
для: elenaki
(10.01.2017 в 11:31)
| | Все сделала.
CREATE TABLE IF NOT EXISTS `likes` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`userid` int(10) NOT NULL,
`userid2` int(10) NOT NULL,
`postid` int(10) NOT NULL,
`date` int(10) NOT NULL,
`type` enum('like','dislike','none') NOT NULL DEFAULT 'like',
`typedata` enum('materials','messages') NOT NULL DEFAULT 'materials',
PRIMARY KEY (`id`),
KEY `id` (`id`,`userid`,`userid2`,`postid`,`date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
|
Вопрос: зачем нужно было все id делать индексами и чем index отличается от primary key? | |
|
|
|
|
|
|
|
для: Elena91
(13.01.2017 в 04:27)
| | Для более быстрого поиска.
У меня есть таблицы по 11 млн записей. По имени найти что-то нереально, а по полю, где есть индекс ищет. | |
|
|
|
|
|
|
|
для: elenaki
(13.01.2017 в 16:04)
| | На тестовом сайте localhost удалила таблицу и создала заново назначив всем id индексы. При редактировании таблицы не получается назначить индексы. Можно как-нибудь это сделать с помощью команд например таких как ALTER TABLE, а то на основном сайте у меня уже создана таблица без индексов и уже кто-то проголосовал за статьи не хочется удалять таблицу и заново создавать? | |
|
|
|
|
|
|
|
для: Elena91
(14.01.2017 в 05:01)
| |
ALTER TABLE имя_таблицы ADD INDEX имя_индекса (список_столбцов);
|
Я бы сделала индексы по каждому полю, где записаны id, а не по всем вместе. PhpMyAdmin долго, но строит индексы и к существующим (заполненным) таблицам. Я, правда, на локальном делала. По 2 часа ждала, но сделала.. | |
|
|
|
|
|
|
|
для: elenaki
(16.01.2017 в 12:11)
| | Сейчас изучаю php и mysql. Конечно прошло много времени когда я задала вопрос про количество записей в mysql, но все таки как сделать индексы по каждому полю а не по всем вмести. Можно увидеть пример. | |
|
|
|
|
|
|
|
для: Elena91
(13.02.2017 в 01:09)
| | В PMA? Создать индекс (команда с плюсиком), выбрать ОДИН столбец, выбрать тип - index, дать имя, нажать OK, ждать.
или
ALTER TABLE имя_таблицы ADD INDEX имя_индекса ( имя столбцa);
|
| |
|
|
|