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

Форум MySQL

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

 

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

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

тема: Быстрая выборка части полей.
 
 автор: Loki   (13.10.2010 в 13:11)   письмо автору
 
 

Есть таблица пользователей. В ней примерно три десятка полей. 25 из них не обновляются почти никогда, а вот пять оставшихся - надо обновлять сравнительно часто.
Нужно какое-то решение для быстрой работы с этими полями. Сходу видится два решения:

1. Вынести эти поля в отдельную таблицу. В этом случае кэш основной таблицы не будет сбрасываться при каждом обновлении. Но придется почти к каждому запросу с получением информации о пользователе пристыковывать еще одну таблицу.

2. Сделать индекс по этим пяти полям (ну по шести на самом деле - надо добавить primary id еще). В теории это должно позволить быстро выбирать информацию прямо из индекса. Но что-то этот вариант у меня не сработал - сам mysql использовать индекс отказался, а если заставить его делать это принудительно, то никакого прироста скорости я не увидел (может не так мерил, конечно).

Какие будут рекомендации?

  Ответить  
 
 автор: Trianon   (13.10.2010 в 13:47)   письмо автору
 
   для: Loki   (13.10.2010 в 13:11)
 

2. если индекс станет толщиной с таблицу - какой в нем профит?

  Ответить  
 
 автор: Loki   (13.10.2010 в 14:28)   письмо автору
 
   для: Trianon   (13.10.2010 в 13:47)
 

Да он и становится толщиной в четверть таблицы:(
Теоретически профит в том, что таблица в 4 раза толще, так что из индекса выбирать, вроде как, быстрее. Правда, добавлять туда...:(

  Ответить  
 
 автор: captain-america   (15.10.2010 в 12:15)   письмо автору
 
   для: Loki   (13.10.2010 в 13:11)
 

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

  Ответить  
 
 автор: Loki   (15.10.2010 в 14:17)   письмо автору
 
   для: captain-america   (15.10.2010 в 12:15)
 

В порядке убывания:
SELECT
JOIN
UPDATE
INSERT

  Ответить  
 
 автор: captain-america   (15.10.2010 в 17:02)   письмо автору
 
   для: Loki   (15.10.2010 в 14:17)
 

Я немного не про это, скажем у меня часто идет
поиск
просмотр сообщений
просмотр фото
,где требуется только часть инфы о юзере, которая у меня в 1 таблице, остальная инфа по юзеру показывается только на одной странице. Поэтому я отделил эту часть инфы в одну таблицу.

Это один из критериев по которому стоит решать, отделять ли данные или нет

  Ответить  
Rambler's Top100
вверх

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