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

Форум MySQL

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

 

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

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

тема: Неработает индекс по полю DateTime
 
 автор: klow   (18.10.2007 в 12:29)   письмо автору
 
 

Создал таблицу в котором есть поле с типом DateTime. Построил индекс по этому полю и по другим.
При выборке, построение плана запроса участвуют только индексы по другим полям, а по полю DateTime - индекс неработает. В чем может быть проблема?

CREATE TABLE `TableName` (
`ID` int(11) NOT NULL auto_increment,
`A2` varchar(2) NOT NULL,
`A1` varchar(6) NOT NULL,
`DateTimeLoad` datetime NOT NULL,
`Pokazatel_Id` int(11) NOT NULL,
`Value` int(11) default NULL,
PRIMARY KEY (`ID`),
KEY `IndexA1` (`A1`),
KEY `IndexPok` (`Pokazatel_Id`),
KEY `IndexA2` (`A2`),
KEY `IndexDate` (`DateTimeLoad`)
) ENGINE=InnoDB AUTO_INCREMENT=563042 DEFAULT CHARSET=cp1251;

InnoDB, MySql 5.0.45

   
 
 автор: cheops   (18.10.2007 в 12:58)   письмо автору
 
   для: klow   (18.10.2007 в 12:29)
 

А запрос на выборку как выглядит?

   
 
 автор: Klow   (18.10.2007 в 13:13)   письмо автору
 
   для: cheops   (18.10.2007 в 12:58)
 

SELECT MAX(DateTimeLoad) FROM TableName
SELECT count(id) FROM TableName WHERE DateTimeLoad>'2007-10-1'

   
 
 автор: vbps   (19.10.2007 в 17:07)   письмо автору
 
   для: Klow   (18.10.2007 в 13:13)
 

а если указать и время?
ты же указываешь формат date а не datetime

datetime смотрится так 2007-10-18 16:02:22 + учитывай то что при запросе есть пробел

   
 
 автор: klow   (22.10.2007 в 16:24)   письмо автору
 
   для: vbps   (19.10.2007 в 17:07)
 

почему тогда этот не работает
SELECT MAX(DateTimeLoad) FROM TableName

   
 
 автор: Faraon   (24.10.2007 в 16:55)   письмо автору
 
   для: Klow   (18.10.2007 в 13:13)
 

-

   
 
 автор: Klow   (22.10.2007 в 16:26)   письмо автору
 
   для: klow   (18.10.2007 в 12:29)
 

изменил DateTime на Date - результат тот же, вернее ни какого. Индексы не работаю.

   
 
 автор: vbps   (24.10.2007 в 16:31)   письмо автору
 
   для: Klow   (22.10.2007 в 16:26)
 

2007-10-01

   
 
 автор: klow   (24.10.2007 в 19:15)   письмо автору
 
   для: vbps   (24.10.2007 в 16:31)
 

>2007-10-01
так работает. :)
Но почему по функциям max и min не используется индекс?
SELECT MAX(DateTimeLoad) FROM TableName

   
 
 автор: Duke   (26.10.2007 в 19:14)   письмо автору
 
   для: klow   (24.10.2007 в 19:15)
 

А как поменять, чтобы было 12:33 21.04.2007? меняю в phpmyadmin, но он сбрасывает на стандарт. спасибо!

   
 
 автор: cheops   (27.10.2007 в 10:44)   письмо автору
 
   для: Duke   (26.10.2007 в 19:14)
 

Не надо менять формат - просто форматируйте дату с помощью функции DATE_FORMAT() при выборке из таблицы
SELECT DATE_FORMAT(putdate,'%H:%i' %d-%m-%Y') AS putdate_print FROM tbl 

PS Под новые вопросы лучше заводить новые темы.

   
 
 автор: Duke   (04.11.2007 в 16:34)   письмо автору
 
   для: cheops   (27.10.2007 в 10:44)
 

спасибо)

   
Rambler's Top100
вверх

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