2013-01-06 47 views
0
訂單

返回新的數組我有一個數字的JavaScript數組,其關聯到的ID在一個MySQL表
例如:MYSQL PHP比較ID的數組表和

[5,7,11,100,201,55,67] // ids 

我想比較這數組MYSQL表,按日期排序(或其他任意列),並按Date返回相同的ID。 例如:

TABLE: someTable 
- id column 
- Date column 
- ect column 

我如何才能儘可能高效只返回ID作爲可能嗎?
如果我試圖按順序返回大量ID,比如說超過20k,這個函數是否會滯後?

+0

出於興趣,你如何將這些ID放入JS中?在首先渲染頁面之前,您能否對數據進行排序?通過AJAX傳遞超過2萬個ID和效率的想法不一起 –

+0

@jon - 我從關聯的標籤/類別表中獲取標識 - 例如,如果我從「MYSQL」查詢返回20k'ID'結果,然後我想按日期對這些ID進行排序,我必須將它與包含日期的ID表進行比較..我在執行Sort之前將標記查詢的結果保存在JavaScript數組中。也許這是我錯了,也許我應該比較日期,同時我以某種方式獲取標籤。 –

回答

2
SELECT id FROM someTable WHERE id IN (yourIdList) ORDER BY date; 

請注意,如果日期是創建日期並且ID是自動增量,則可能「作弊」。你可以按ID排序,這應該與按日期排序相同。

+0

即使它們是自動遞增的值,並且日期是時間戳,這些也不保證具有相同的順序。這是一個無法做出的危險假設。很容易改變下一個用作id的數字。 – Boundless

+0

@jim我不敢相信我沒有想到這一點,按ID的升序/降序排序,在這種情況下,我甚至不必再次訪問數據庫,我可以對數組進行排序。謝謝! –

2
SELECT someTable.id FROM someTable WHERE someTable.id in (5,7,11,100,201,55,67) ORDER BY someTable.date 

你必須做一些性能測試,看看它是否滯後。