代码之家  ›  专栏  ›  技术社区  ›  rfusca

比较mysql索引中的两个字段?

  •  2
  • rfusca  · 技术社区  · 16 年前

    我很确定我知道答案,但是任何想法都会非常有帮助…

    首先,这是MySQL5.1.32社区。我有一个大表(数百万行,不能减小大小——即减小的大小),相关字段是两个日期时间字段。我们称之为日期1和日期2。我需要运行一个select查询,它返回所有行(实际上是uuid varchar(40),其中date1>date2。

    SELECT id FROM table1 WHERE date1 > date2;
    

    跑步时间太长(2分钟)。日期的索引本身显然不起作用。除了存储两个日期之间的差异和索引之外,还有什么方法可以减少查询时间?这似乎是一个很基本的问题,但我总是想知道我是否错过了什么…

    2 回复  |  直到 16 年前
        1
  •  1
  •   feihtthief    16 年前

    您是否运行了一个计数来查看是否返回了如此多的数据,以至于返回所有数据需要这么长的时间?

    select count(ID) from table1 WHERE date1 > date2;
    

    查询似乎足够简单,您的数据量可能就是问题所在。

        2
  •  0
  •   Community CDub    8 年前

    我在试着找到我自己的答案。

    但我有个线索:函数索引。

    我在Oracle DBS上使用过。

    但Seams MySQL缺乏支持:

    Is it possible to have function-based index in MySQL?