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

  • DJPixcell

    DJPixcell

    20 NİSAN 2007
  • Just So

    Just So

    3 HAZİRAN 2007
  • Random Act of Kindness Video Contest

    Random Act o

    18 EYLÜL 2012