當前位置:成語大全網 - 書法字典 - 關於數據庫多對多結構的設計和SQL語句的復雜問題!

關於數據庫多對多結構的設計和SQL語句的復雜問題!

這樣做的前提是果實的數量基本固定且不超過10,人的數量是不定的、無限的。

1,不合理低效,使用字符串匹配和全表掃描都是耗時的操作。

2.形成兩個巨型表,聯查效率會很低。

我建議三個方案,妳可以測試壹下哪個效率最高,因為設計和語句本身效率不高,但是和使用方式、數據水平有很大關系,幾萬和幾百萬的優化策略完全不壹樣。

建議1:改進妳的第二個方案,建立壹個水果字典表C,為每個水果定義壹個相似人的ID號,然後將表B存儲到兩個ID關聯中,兩個字段都是索引。表A中的person ID是主鍵和唯壹索引,然後語句如下:

select * from table a where existing(select * from table B where fruit ID in(1,3,4) and personnel ID = t. personnel id)。

建議二:用空間換效率。union的效率應該高於or的百萬級別。所以作為第二個建議,類似於表A的表結構,為每壹種水果建立壹個表,然後在這個表中存儲喜歡這種水果的人,比如Table-Apple和Table-西瓜,在這個表中存儲了喜歡這種水果的人的ID和姓名。這種方式避免了查詢。聲明如下:

Select * from table-apple

聯盟

select * from table-西瓜

聯盟

select * from table-香蕉

……

建議三:它也是為了效率而使用空間,但是它使用的是or。我估計效率會在百萬級別最低。在表A(不保存水果的字符串字段)的基礎上,擴展了10個字段,類型為integer,分別對應10種水果,每個字段存儲0和1兩個值。這10字段全部

從表A中選擇*其中蘋果=1或香蕉= 1或...