|
|
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Задача - выбрать из таблицы записи за определенный день, записанные после определенного времени... поле Datatime в таблице заполняется now() при добавлении записи в в таблицу и по этому полю есть индекс. where стоит по дате=нужной и времени > нужного... таблица большая... выборка работает долше если выбирать например записи просто за один день.. подзапросы не поддерживаются... как нидь убыстрить можно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2004, 15:02 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
индекс по этому полю стоит ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2004, 16:00 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
извини, заработался увидел уже. А что explain показывает, индекс используется ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2004, 16:02 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
И дай сюды текст запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2004, 19:50 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Вот кусочек.. с перла.. $sth = $dbh->prepare("SELECT * FROM xxx WHERE dayofyear(dt)=dayofyear(now()) and time_to_sec(dt)>=time_to_sec('".$ttime."') ORDER BY dt DESC"); индекс стоит.. эксплаин грит, что индекс пользует... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 11:36 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Может - сначала вычислить нужный момент времени (дату+время), после которого сделует делать выборку, а потом так: SELECT * FROM xxx WHERE dt >= some_data_time ORDER BY dt DESC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 12:04 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Спасибо за мысль. Такой вариант получился: $sth = $dbh->prepare("SELECT * FROM guest WHERE dt>=date_add(curdate(), interval '".$ttime."' hour_second) ORDER BY dt DESC"); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 14:13 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Вообще - лучше в запросах лишний раз функции не использовать - а использовать константы - так, имхо, быстрее будет. Думаю - что этот кусок: date_add(curdate(), interval '".$ttime."' hour_second можно вычислить где-то в перле, и в запрос передать вычисленную константу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 16:17 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=32690004&tid=1854815]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 499ms |

| 0 / 0 |
