मेरे पास फोन कॉल के साथ एक MySQL तालिका है। प्रत्येक पंक्ति का मतलब एक फोन कॉल है। कॉलम हैं:MySQL डेटा - एक ही समय में फोन कॉल की संख्या
start_time
start_date
duration
मैं एक अधिकतम फोन कॉल एक ही समय में कहा जाता है पाने के लिए की जरूरत है। यह टेलीफोन एक्सचेंज आयाम की वजह से है।
मेरा समाधान दो टाइमस्टैम्प कॉलम timestamp_start
और timestamp_end
बनाना है। तब मैं दूसरे, दिन-ब-एक पाश दूसरा दिन से चलाने के लिए और की तरह MySQL कुछ पूछना:
SELECT Count(*) FROM tbl WHERE start_date IN (thisday, secondday) AND "this_second_checking" BETWEEN timestamp_start AND timestamp_end;
यह काफी धीमी है। क्या कोई बेहतर समाधान है? धन्यवाद!
संपादित करें - मैं इस समाधान का उपयोग करता हूं और यह मुझे उचित परिणाम देता है। एसक्यूएल परत डीबीआई - http://dibiphp.com/cs/quick-start का उपयोग किया जाता है।
$starts = dibi::query("SELECT ts_start, ts_end FROM " . $tblname . " GROUP BY ts_start");
if(count($starts) > 0):
foreach ($starts as $row) {
if(isset($result)) unset($result);
$result = dibi::query('SELECT Count(*) FROM ' . $tblname . ' WHERE "'.$row->ts_start.'" BETWEEN ts_start AND ts_end');
$num = $result->fetchSingle();
if($total_max < $num):
$total_max = $num;
endif;
}
endif;
echo "Total MAX: " . $total_max;
आपको केवल यह जांचने की आवश्यकता है कि कितने लोग चल रहे हैं, कितने चल रहे हैं, हर दूसरे – Blem
की जांच करने की आवश्यकता नहीं है क्या आपको start_date, timestamp_start और timestamp_end पर अनुक्रमणिका मिली है? – pgl
हां, मेरे पास इंडेक्स हैं। यह एक बड़ा सुधार था। ब्लेम: मुझे लगता है कि, धन्यवाद! – Xdg