簡體   English   中英

使用Codeigniter從數據庫中獲取數據的最快方法

[英]The fastest way to fetch data from the database using codeigniter

有一個通訊表,其中包含內容的ID和相應的密鑰。 必須組織快速搜索鍵中的篩選。 如果鍵的值等於null,則接近任何內容。 例如,如果發布查詢到$ _POST == array(filter1 => 2,filter2 => 4,filter3 => 2,filter4 => null) ,那么結果將是array(content_ids => array( 4,7 ))

id | content_id | filter1 | filter2 | filter3 | 過濾器4
1 | 1 | 1 | 3 | 1 | NULL
2 | 2 | 2 | 6 | 2 | 2
3 | 3 | 1 | 5 | 1 | NULL
4 | 5 | 1 | 1 | 1 | 5
5 | 4 | 2 | 4 | 2 | 7
6 | 6 | 2 | 2 | 2 | NULL
7 | 7 | 2 | 4 | NULL | NULL

PS:該表將包含數千行,並且過濾器的數量將等於12

恕我直言,問題更多是關於SQL而不是Codeigniter。

您可以做的是建立看起來像這樣的查詢

SELECT content_id
  FROM table1
 WHERE (? IS NULL OR filter1 = ? OR filter1 IS NULL)
   AND (? IS NULL OR filter2 = ? OR filter2 IS NULL)
   AND (? IS NULL OR filter3 = ? OR filter3 IS NULL)
   AND (? IS NULL OR filter4 = ? OR filter4 IS NULL)

? 是您通過POST獲得的實際過濾器值的占位符。

輸出您的樣本數據:

| CONTENT_ID |
|------------|
|          4 |
|          7 |

這是SQLFiddle演示

考慮到性能,請考慮創建一個或多個覆蓋索引(取決於實際數據訪問模式)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM