也許不是全世界錯了,也許不是我錯了,只是題目出錯了

前段時間收到一個朋友的郵件,推薦去參加個某論壇的答題活動.
活動地址:http://bbs.phpthinking.com/thread-305-1-1.html
最後的結果竟然是答錯一道題目,和該論壇負責人討論未果,並被指責"不可能全世界都錯了,就你對了".
導致心情很是糟糕,不得不跑51上來吐個槽.
現在把出錯的題目發上來:
【單選】user表中對字段name(varchar類型)創建了普通索引,下列查詢語句可以使用索引是?
A. SELECT * FROM users where name not in ('a','b');
B. SELECT * FROM users where name like '%a%';
C. SELECT * FROM users where name between 'a' and 'b';
D. SELECT * FROM users where name = age;
根據分析,大家一般都選C了哈.
在大多數情況下,test1:
create table user (
id int(11) auto_increment,
name varchar(20) not null,
primary key (id)
);
alter table user add index idx_name (name);
並插入幾條數據,explain4個選項之後發現,只有C是"完美"的答案.

但是,本題目中並未提到是否存在其他字段,也並未規定是否允許創建其他主鍵,那麼其他的字段和主鍵是否會對測試結果造成影響呢?
下面,我們來進行test2:
create table user2(
name varchar(20) not null
);
alter table user2 add index idx_name (name);
繼續explain...


好的,各位親愛的小夥伴,經過測試,會發現a-c竟然都使用了索引,當然D一如既往的語法錯誤.
該負責人在跟我強調大多數的情況下C是如何如何的正確,但我想說,證明一道題目出的有問題,只需要一個反例就足夠了.
最後,獲悉該題目竟然還是某著名公司的面試題,出題人乃是經由百萬年薪的經理之手.
我想,某公司啊,本着對面試尊敬的態度,還是先完善下該題目吧!
----答案一般大多數人是對的,而真理往往掌握在少數人手中.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章