Mysql

日期 - 開始和結束與僅開始

  • June 22, 2022

在我的數據庫中,我有一個價格表。價格在一段時間內或永久有效,但在給定時間始終存在有效價格。

我想知道你是寧願有一個starts_atends_at列,哪裡ends_at總是等於前一個starts_at值,還是只starts_at在給定日期查詢最後一個值?

我可以看到擁有between功能的好處,但另一方面,更新一行很麻煩,因為它可能會影響ends_at這里和那裡的日期。

如果您只有數千行,請執行任何操作。如果你有幾百萬行,那麼你會發現“在開始和結束之間”效率低下,沒有INDEX辦法讓它快。

當每行都有開始和結束時,優化器不知道是否存在重疊範圍。因此,它必須假設您進行的任何查找都可能有多個結果。

ip-ranges展示瞭如何使非重疊範圍有​​效地工作。(唉,要適應你的應用程序的變化需要一些適應。)

引用自:https://dba.stackexchange.com/questions/313575