SORU
18 EYLÜL 2008, PERŞEMBE


Nasıl bir MySql DATETİME alan tarih bölümü üzerinde bir dizin oluşturur

Nasıl tarihte bir dizin DATETİME alanın bir parçası oluşturabilirim?

mysql> SHOW COLUMNS FROM transactionlist;
 ------------------- ------------------ ------ ----- --------- ---------------- 
| Field             | Type             | Null | Key | Default | Extra          |
 ------------------- ------------------ ------ ----- --------- ---------------- 
| TransactionNumber | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| WagerId           | int(11)          | YES  | MUL | 0       |                |
| TranNum           | int(11)          | YES  | MUL | 0       |                |
| TranDateTime      | datetime         | NO   |     | NULL    |                |
| Amount            | double           | YES  |     | 0       |                |
| Action            | smallint(6)      | YES  |     | 0       |                |
| Uid               | int(11)          | YES  |     | 1       |                |
| AuthId            | int(11)          | YES  |     | 1       |                |
 ------------------- ------------------ ------ ----- --------- ---------------- 
8 rows in set (0.00 sec)

TranDateTime olduğu gibi bir işlemin tarih ve saati kaydetmek için kullanılır

Benim Masa ve deyim 1,000,000 kayıtları var

SELECT * FROM transactionlist where date(TranDateTime) = '2008-08-17' 

uzun bir zaman alır.

DÜZENLEME:

Bu blog yazısı bir göz at "Why MySQL’s DATETIME can and should be avoided"

CEVAP
18 EYLÜL 2008, PERŞEMBE


Eğer yanlış hatırlamıyorsam, koca bir masa işlevi ile sütun geçen olduğun için tarama çalıştırın. MySQL itaatkar her sütun için işlevi, sorgu iyileştiricisi gerçekten işlevi sonuçlarını bilemez yana dizin atlayarak çalışır.

Ne yapardım gibi bir şey:

SELECT * FROM transactionlist 
WHERE TranDateTime BETWEEN '2008-08-17' AND '2008-08-18';

Bu 2008-08-17, ve de tam olarak olan biten her şeyi 2008-08-18 00:00:00 tarihinde olan biten her şeyi vermek gerekir. Eğer problem buysa, '2008-08-17 23:59:59' ve sadece 2008-08-17. ikinci dönem değiştirebilirsin

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ampisound

    Ampisound

    12 Kasım 2006
  • BigBoyTV

    BigBoyTV

    25 EYLÜL 2013
  • super1988guy

    super1988guy

    9 Aralık 2007