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

Форум MySQL

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

 

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

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

тема: Система диалога
 
 автор: Diablo_   (11.05.2010 в 03:46)   письмо автору
 
 

Всем привет!
Поставили задачу, сделать так сказать систему диалога пользователей.
Сделал базу
id, for_user, from_user, message, date
И вот такой запрос
SELECT `id`, `message` FROM `user_friends_message` WHERE (`for_user` = 1 AND `from_user` = 2) OR (`for_user` = 2 AND `from_user`=1) ORDER BY `date` DESC LIMIT 100

Индексы в базе, сделать не удаётся, не индексируется((
В принципе, всё работает кооректно и нормально, хоть EXPLAIN и выдаёт filesort.
Но вот если в таблице много записей более 1000 - 2000 то запрос получается долгий и на мускул идёт довольно большая нагрузка.

Может кто то из вас, делал что то подобное и поделится советами, как можно оптимизировать или сделать более лучше и корректно?

  Ответить  
 
 автор: oliss   (11.05.2010 в 03:57)   письмо автору
 
   для: Diablo_   (11.05.2010 в 03:46)
 

Индексы в базе, сделать не удаётся это почему?

  Ответить  
 
 автор: Diablo_   (11.05.2010 в 04:07)   письмо автору
 
   для: oliss   (11.05.2010 в 03:57)
 

Не в том смысле, что не получается, а в том что они особой роли не играют!
Что с индексами что без них всё равно EXPLAIN показывает filesort но да, скорость запроса увеличивается, но всё равно не на много!

  Ответить  
 
 автор: oliss   (11.05.2010 в 04:29)   письмо автору
 
   для: Diablo_   (11.05.2010 в 04:07)
 

А вам это
(
`for_user` = 1 AND `from_user` = 2
) OR 
(
`for_user` = 2 AND `from_user`=1

не кажется чуть странным
кроме того, вы понимаете работу LIMIT (что происходит при запросе) ?
EXPLAIN показывает filesort 
а как вы думаете почему?

  Ответить  
 
 автор: Diablo_   (11.05.2010 в 10:06)   письмо автору
 
   для: oliss   (11.05.2010 в 04:29)
 

1. странным может и кажется, но не нашёл других, более оптимальных вариантов для того, что бы выбрать сообщения которые юзер отправил мне и я ему!
2. потому что order by date desc. Но если бы индекс сработал верно и полноценно то EXPLAIN показал бы using where. Или я не прав?

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

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