দয়া করে এই টেবিলটি দেখুন:
mysql> desc s_p;
+-------------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| s_pid | int(10) unsigned | YES | MUL | NULL | |
| sm_id | int(10) unsigned | YES | MUL | NULL | |
| m_id | int(10) unsigned | YES | | NULL | |
| created | datetime | YES | | NULL | |
| s_date | datetime | YES | | NULL | |
| estimated_date | datetime | YES | MUL | NULL | |
+-------------------------+------------------+------+-----+---------+----------------+
এখন এই প্রশ্নগুলি দেখুন:
mysql> select count(*) from s_p where estimated_date is null;
+----------+
| count(*) |
+----------+
| 190580 |
+----------+
1 row in set (0.05 sec)
mysql> select count(*) from s_p where estimated_date is not null;
+----------+
| count(*) |
+----------+
| 35640 |
+----------+
1 row in set (0.07 sec)
mysql> select count(*) from s_p;
+----------+
| count(*) |
+----------+
| 1524785 |
+----------+
উপরের গণনাগুলি মিলছে না। আমার বোঝাপড়া অনুসারে:
সঙ্গে গণনা IS NULL
এবং গণনা IS NOT NULL
গণনা সমান যখন যেখানে দফা ছাড়া জানতে চাওয়া হবে।
এখানে কি ঘটছে সম্পর্কে কোনও ধারণা?
================================================== =
17 ফেব্রুয়ারী 2012 আপডেট
যেহেতু, আমি দেখতে পেয়েছি যে প্রচুর লোকেরা বর্তমানে_ত্রে যে ধরণের মান অনুমান করেছে তার সম্পর্কে জিজ্ঞাসা করছে। উত্তরটি এখানে:
mysql> select distinct date(estimated_date) from s_p;
+----------------------+
| date(estimated_date) |
+----------------------+
| NULL |
| 2012-02-17 |
| 2012-02-20 |
| 2012-02-21 |
| 2012-02-22 |
| 2012-02-23 |
| 2012-02-24 |
| 2012-02-27 |
| 2012-02-28 |
+----------------------+
9 rows in set (0.42 sec)
যেমন আপনি উপরের আনুমানিক_ তারিখটি দেখতে পাচ্ছেন হয় নাল বা একটি বৈধ ডেটটাইম মান রয়েছে। কোনও শূন্য বা খালি স্ট্রিং নেই ""।
আনুমানিক_ তারিখের সূচকে যদি কিছু সমস্যা / সমস্যা থাকে তবে এটি (মূল সমস্যা) ঘটতে পারে?
================================================== =
18 ফেব্রুয়ারী 2012 আপডেট
এখানে শো শো টেবিল আউটপুট তৈরি করুন:
| s_p | CREATE TABLE `s_p` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`s_id` int(10) unsigned DEFAULT NULL,
`sm_id` int(10) unsigned DEFAULT NULL,
`m_id` int(10) unsigned DEFAULT NULL,
`created` datetime DEFAULT NULL,
`estimated_date` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `sm_id` (`sm_id`),
KEY `estimated_date_index` (`estimated_date`) USING BTREE,
) ENGINE=InnoDB AUTO_INCREMENT=1602491 DEFAULT CHARSET=utf8 |
আবার, আমি এখানে অনুমান_তম তারিখে কেবল সূচকটিই সন্দেহ করতে পারি।
এছাড়াও, মাইএসকিএল সার্ভার সংস্করণটি 5.5.12।
select count(*)
এবং করছেন না select count(estimated_date)
? এই দু'টি পৃথক ফলাফল ফেরত দেবে কারণ আপনি যদি একমাত্র জিনিস গণনা করছেন তবে NULs উপেক্ষা করা হবে।
SELECT COUNT(*),SUM(CASE WHEN estimated_date IS NULL THEN 1 ELSE 0 END),SUM(CASE WHEN estimated_date IS NOT NULL THEN 1 ELSE 0 END) from s_p
- যা একসাথে সমস্ত গণনা পাওয়া উচিত।
CHECK TABLE
হয় তবে আপনি কি এটি চালাতে পারবেন ? বন্যভাবে বৃহত্তর পূর্ণ সারির গণনা বিবেচনা করে , আমি অনুমান করব যে DELETE
কোথাও একটি পাগল হয়েছে।