• <i id='uAIVF'><tr id='uAIVF'><dt id='uAIVF'><q id='uAIVF'><span id='uAIVF'><b id='uAIVF'><form id='uAIVF'><ins id='uAIVF'></ins><ul id='uAIVF'></ul><sub id='uAIVF'></sub></form><legend id='uAIVF'></legend><bdo id='uAIVF'><pre id='uAIVF'><center id='uAIVF'></center></pre></bdo></b><th id='uAIVF'></th></span></q></dt></tr></i><div id='uAIVF'><tfoot id='uAIVF'></tfoot><dl id='uAIVF'><fieldset id='uAIVF'></fieldset></dl></div>

        <small id='uAIVF'></small><noframes id='uAIVF'>

        • <bdo id='uAIVF'></bdo><ul id='uAIVF'></ul>
      1. <tfoot id='uAIVF'></tfoot>

      2. <legend id='uAIVF'><style id='uAIVF'><dir id='uAIVF'><q id='uAIVF'></q></dir></style></legend>

        如何在 MySql 中的 DATETIME 字段的日期部分创建索引

        时间:2023-05-24

        • <bdo id='b0WZm'></bdo><ul id='b0WZm'></ul>

            <tfoot id='b0WZm'></tfoot>

              <small id='b0WZm'></small><noframes id='b0WZm'>

                <tbody id='b0WZm'></tbody>
              <i id='b0WZm'><tr id='b0WZm'><dt id='b0WZm'><q id='b0WZm'><span id='b0WZm'><b id='b0WZm'><form id='b0WZm'><ins id='b0WZm'></ins><ul id='b0WZm'></ul><sub id='b0WZm'></sub></form><legend id='b0WZm'></legend><bdo id='b0WZm'><pre id='b0WZm'><center id='b0WZm'></center></pre></bdo></b><th id='b0WZm'></th></span></q></dt></tr></i><div id='b0WZm'><tfoot id='b0WZm'></tfoot><dl id='b0WZm'><fieldset id='b0WZm'></fieldset></dl></div>
              <legend id='b0WZm'><style id='b0WZm'><dir id='b0WZm'><q id='b0WZm'></q></dir></style></legend>

                  本文介绍了如何在 MySql 中的 DATETIME 字段的日期部分创建索引的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  限时送ChatGPT账号..

                  如何在 DATETIME 字段的日期部分创建索引?

                  How do I create an index on the date part of DATETIME field?

                  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 用于保存交易发生时的日期和时间

                  TranDateTime is used to save the date and time of a transaction as it happens

                  我的表中有超过 1,000,000 条记录和语句

                  My Table has over 1,000,000 records in it and the statement

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

                  需要很长时间.

                  看看这篇关于的博客文章为什么 MySQL 的 DATETIME 可以而且应该避免"

                  推荐答案

                  如果我没记错的话,这将运行整个表扫描,因为您通过函数传递列.MySQL 会乖乖地为每一列运行函数,绕过索引,因为查询优化器无法真正知道函数的结果.

                  If I remember correctly, that will run a whole table scan because you're passing the column through a function. MySQL will obediently run the function for each and every column, bypassing the index since the query optimizer can't really know the results of the function.

                  我会做的是:

                  SELECT * FROM transactionlist 
                  WHERE TranDateTime BETWEEN '2008-08-17' AND '2008-08-17 23:59:59.999999';
                  

                  这应该会告诉你 2008-08-17 发生的一切.

                  That should give you everything that happened on 2008-08-17.

                  这篇关于如何在 MySql 中的 DATETIME 字段的日期部分创建索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:SQL查询显示最近的日期? 下一篇:错误:选择命令拒绝用户 '<userid>'@'<ip-address>

                  相关文章

                  <small id='CqRfY'></small><noframes id='CqRfY'>

                  <i id='CqRfY'><tr id='CqRfY'><dt id='CqRfY'><q id='CqRfY'><span id='CqRfY'><b id='CqRfY'><form id='CqRfY'><ins id='CqRfY'></ins><ul id='CqRfY'></ul><sub id='CqRfY'></sub></form><legend id='CqRfY'></legend><bdo id='CqRfY'><pre id='CqRfY'><center id='CqRfY'></center></pre></bdo></b><th id='CqRfY'></th></span></q></dt></tr></i><div id='CqRfY'><tfoot id='CqRfY'></tfoot><dl id='CqRfY'><fieldset id='CqRfY'></fieldset></dl></div>

                  <tfoot id='CqRfY'></tfoot>

                    • <bdo id='CqRfY'></bdo><ul id='CqRfY'></ul>
                      <legend id='CqRfY'><style id='CqRfY'><dir id='CqRfY'><q id='CqRfY'></q></dir></style></legend>