2013-03-03 37 views
0

我需要建立一個Sql表,並保存和sellerid和他可用的日期(日期和時間)。與日曆事件的Sql表

而且每次賣方添加日期(日期和時間),他都可用,它將被添加到表格中。

我認爲用這個表:

EVENTS 

sellerid date 
123456  5/12/2013 8:10:00 
121212  9/5/2013 19:40:00 
123456  4/12/2013 12:00:00 

但我的問題是與選擇得到這個數據。我想獲得所有類似的東西:

SELECT * From Events 

但我恐怕這會花費太多時間。所以我想知道這是否是一種很好的方式來實現我想要的。或者,這是否會花費很多時間?

我正在使用MySql。

+0

你爲什麼不選擇賣家ID *的活動*? – 2013-03-03 18:34:45

+0

,因爲我需要他們 – MTA 2013-03-03 18:57:17

回答

1

如果您需要完整的數據(不帶過濾器),我建議你選擇數據的「塊」:

select * from events limit 0, 1000; -- The first thousand rows 
select * from events limit 1000, 1000; -- The next thousand rows 
... 

如果你要過濾你的數據,你必須確保你有表中適當的索引。具體來說,您需要對錶格中的兩個字段進行索引。如果您尚未創建您的索引:

alter table events 
    add index idx_sellerId(sellerId), 
    add index idx_date(date) 

當您通過sellerIddate同時過濾掉這應該加快東西:

select * from events where sellerId=123456; 
select * from events where date between '2013-5-12 00:00:00' and '2013-5-12 23:59:59' 

我會單獨存儲在datetime屬於你date字段,但這只是我。

+0

而表它自我很好?還是有其他選擇來實現我想要的? – MTA 2013-03-03 19:14:30

+0

@MTA我沒有看到你的表有什麼問題。由於你的'events'表包含你需要的最少數據('sellerId'和'date'),所以我認爲你在其他表格中有賣家的詳細信息(如果不這樣做,請保留你的數據和信息) 。除此之外,MySQL本身在處理大數據集方面沒有問題(我使用的選擇可以返回一百萬行,而不會發生混亂),但是當然,您正在使用的客戶端可能會遇到大數據集的一些問題。這就是爲什麼我建議你使用「塊」方法。檢查'SELECT ... LIMIT ...'的用法:http://dev.mysql.com/doc/refman/5.6/en/select.html – Barranka 2013-03-03 19:21:21

1

它取決於數據量(行),如果它的簡單查詢如SELECT * FROM table它不應該花費太多,除非你有成千上萬。

無論如何,如果你有很多數據,你應該考慮過濾日期之間的查詢。 也許任何MySQL專家都不能告訴你更多的信息,但是我已經處理了10,000行,並且加載非常快。

1

我認爲您將通過sellerId過濾數據。如果您在此字段中創建索引,則即使行數很大,也不應該面臨任何低效率問題。