一、單錶查詢索引列和查詢索引列+其他非索引列 查詢資料速度為什麼有差?為什麼查詢非索引列會不走索引?
現象: 單個表,結構如下:
create table `t_attach_new` (查詢語句,下面兩個。`id` int(11) unsigned not null auto_increment,
`fname` varchar(100) not null default '',
`ftype` varchar(50) default '',
`fkey` text not null,
`authorid` int(10) default null,
`created` int(10) not null,
`hash` varchar(255) default null,
`web_url` varchar(255) default null,
primary key (`id`),
key `fname` (`fname`),
key `created` (`created`),
key `id` (`id`,`created`),
key `created_2` (`created`,`id`)
) engine=innodb auto_increment=2621401 default charset=utf8;
為什麼掃瞄行數一樣,第乙個沒用索引,第二個用了呢?
第乙個是直接掃瞄的所有資料行,並且沒用到主鍵索引,但是和用到主鍵索引一樣返回的相同的資料行(看下面的二可以清晰看到區別)
第二個是直接用了fname這個索引,但是返回的資料行與第乙個不一致。
返回的資料
補充 explain type型別:
二、接著看一下這三個查詢的區別,看看怎麼才用到索引
可以看出,1,3 加了order by 的查詢直接用主鍵索引了。2 沒加排序,也沒用到索引,全表掃瞄了。行數也對應增加了許多。
where 1 1 你愛用不用!!
資料庫語句 select from table where 1 1 的用法和作用 這是一種怎樣的查詢語句呢?首先說明,1 1這種語句,都沒有任何關係,對於您而言,沒有任何損失。另外,眾多 都有 select from table where 1 1 此類語句的介紹,並且,針對該類語句,講得實在是讓人...
客戶端用不用bind的區別
無連線的socket的客戶端和服務端以及面向連線socket的服務端 通過呼叫bind函式來配置本地資訊。使用bind函式時,通過將my addr.sin port置為0,函式會自動為你選擇乙個未占用的埠來使用。bind 函式在成功被呼叫時返回0 出現錯誤時返回 1 並將errno置為相應的錯誤號。...
客戶端 用不用 bind 的區別
客戶端 用不用 bind 的區別 2012 05 07 11 41 53 分類 c c 無連線的socket的客戶端和服務端以及面向連線socket的服務端通過呼叫bind函式來配置本地資訊。使用bind函式時,通過將my addr.sin port置為0,函式會自動為你選擇乙個未占用的埠來使用。b...