本文目錄一覽:
- 1、PHP面試題2–常用的數組函數
- 2、程序員面試必備PHP基礎面試題 – 第十三天
- 3、程序員面試必備PHP基礎面試題 – 第十一天
- 4、PHP程序員上機面試題(並附答案,回答好的加分)
- 5、PHP程序員崗位招聘面試題有哪些
- 6、php面試題解答
PHP面試題2–常用的數組函數
一,數組操作的基本函數
1. 數組的鍵名與值
array_values($arr); 獲得數組的值
array_keys($arr); 獲得數組的鍵名
array_flip($arr); 數組的值與鍵名互換(如果有重複前面的會被後面的覆蓋)
in_array(“apple”,$arr); 在數組中檢索apple
array_search(“apple”,$arr); 在數組中檢索apple,如果存在返回鍵名
array_key_exists(“apple”,$arr); 檢索給定的鍵名是否存在數組中
isset($arr[“apple”]); 檢索給定的鍵名是否存在數組中
array_unique() 刪除數組中的重複值
2. 數組的內部指針
current($arr); 返回數組中的當前單元
pos($arr); 返回數組中的當前單元
key($arr); 返回數組中的當前單元的鍵名
prev($arr); 將數組中的內部指針倒回一位
next($arr); 將數組中的內部指針向前移動一位
end($arr); 將數組中的內部指針指向最後一單元
reset($arr); 將數組中的內部指針指向第一單元
each($arr); 將返回數組當前元素的一個鍵/值的構造數組,並使數組指針向前移動一位
list($key,$value) = each($arr); 獲得數組當前元素的鍵名和值
3. 數組和變量之間的轉換
extract(array,extract_rules,prefix); 函數從數組中將變量導入到當前符號表。該函數使用數組鍵名作為變量名,使用數組鍵值作為變量值。針對數組中的每個元素,將在當前符號表中創建對應的一個變量。
compact(var1,var2…); 創建一個包含變量名和它們的值的數組。任何沒有變量名與之對應的字符串都被略過。
二,數組的分段和填充
1. 數組的分段
array_slice(array,start,length,preserve); 返回數組中的選定部分。如果數組中有字符串鍵名,返回的數組將保留鍵名。
array_splice(array1,start,length,array2); 從數組中移除選定的元素,並用新元素取代它。函數返回被移除元素的數組,如果函數沒有移除任何元素(length=0),則替代數組將從start參數的位置插入。不保留替代數組的鍵名。
2. 數組的分割
array_chunk(array,size,preserve_keys); 把一個數組分割為新的數組塊。
3. 數組的填充
array_pad(array,size,value); 將指定數量的帶有指定值的元素插入到數組。如果將size參數設置為負數,該函數會在原始數組之前插入新的元素。如果size參數小於原始數組的長度,該函數不會刪除任何元素。
三,數組與棧
array_push(array,value1,value2…); 向數組尾部插入一個或多個元素。即使數組有字符串鍵名,添加的元素將是數字鍵名。
array_pop(array); 刪除數組的最後一個元素。返回值是數組的最後一個值,即,被刪除的元素值。如果數組為空,或者不是一個數組,將返回NULL。
四,數組和隊列
array_shift(array); 用於刪除數組中的第一個元素,並返回被刪除的元素。如果鍵名是數字,所有的元素都將獲得新的鍵名,從0開始,並以1遞增。
array_unshift(array,value1,value2,value3…); 用於向數組插入新元素,新數組的值將被插入到數組的開頭。數值鍵名將從0開始,以1遞增。字符串鍵名將保持不變。
五,回調函數
array_walk(array,myfunction,parameter…); 將數組中的每個元素應用到 用戶自定義函數。在函數中,數組的鍵名和鍵值是參數。可以通過把用戶自定義函數的第一個參數指定為引用:$value,來改變數組元素的值。
array_map(myfunction,array1,array2,array3…); 函數將用戶自定義函數作用到數組中的每個值上,並返回用戶自定義函數作用後的帶有新的值的數組。myfunction可以為null
array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ); 用回調函數過濾數組中的元素。該函數把輸入數組中的每個鍵值傳給回調函數。如果回調函數返回true,則把輸入數組中的當前鍵值返回給結果數組,數組鍵名保持不變。
array_reduce(array,myfunction,initial); 函數發送數組中的值到用戶自定義函數,並返回一個字符串。如果數組是空的或者初始值未傳遞,該函數返回null。initial為可選,規定發送到函數處理的第一個值。
六,數組的計算
1. 數組元素的求和
array_sum(array); 返回數組中的所有值的和
2. 數組的合併
array_merge(array1,array2,array3…); 用於把一個或多個數組合併成一個數組。如果兩個或更多個數組有相同的鍵名。則最後的數組會覆蓋其他數組。如果向函數輸入了一個數組,且鍵名是整數,則該函數會返回帶有整數鍵名的新數組,其鍵名以0開始進行重新索引。
array_merge_recursive(array1,array2,array3…); 用於把一個或多個數組合併為一個數組,該函數與array_merge()函數之間的不同是在處理兩個或多個數組元素有相同的鍵名的情況下,array_merge_recursive()不會進行鍵名覆蓋,而是將多個相同鍵名的值遞歸組成一個數組。如果您僅僅向 array_merge_recursive() 函數輸入一個數組,結果與 array_merge() 相同。
3. 數組的差集
array_diff(array1,array2,array3…); 函數用於比較兩個(或更多個)數組的值,並返回差集。該函數比較兩個(或更多個)數組的值(key=value中的value),並返回一個差集數組,該數組包括了所有在被比較的數組(array1)中,但是不在任何其他參數數組(array2或array3等等)中的值。
array_diff_assoc(array1,array2,array3…); 函數用於比較兩個(或更多個)數組的鍵名和鍵值,並返回差集。該函數比較兩個(或更多個)數組的鍵名和鍵值,並返回一個差集數組,該數組包括了所有在被比較的數組(array1)中,但是不在任何其他參數數組(array2 或 array3 等等)中的鍵名和鍵值。
4. 數組的並集
array_intersect(array1,array2,array3…); 函數用於比較兩個(或更多個)數組的鍵值,並返回交集。該函數比較兩個(或更多個)數組的鍵值,返回一個交集數組,該數組包括了所有在被比較的數組(array1)中,同時也在任何其他參數數組(array2 或 array3 等等)中的鍵值。
array_intersect_assoc(array1,array2,array3…); 函數用於比較兩個(或更多個)數組的鍵名和鍵值,並返回交集。該函數比較兩個(或更多個)數組的鍵名和鍵值,並返回一個交集數組,該數組包括了所有在被比較的數組(array1)中,同時也在任何其他參數數組(array2 或 array3 等等)中的鍵名和鍵值。
七,數值的排序
array_multisort(): 對多個數組或多維數組進行排序
sort(): 以升序對數組排序
rsort(): 以降序對數組排序
asort(): 根據值,以升序對關聯數組進行排序
ksort(): 根據鍵,以升序對關聯數組進行排序
arsort(): 根據值,以降序對關聯數組進行排序
krsort(): 根據鍵,以降序對關聯數組進行排序
資料參考:
程序員面試必備PHP基礎面試題 – 第十三天
一、在HTTP1.0中,狀態嗎500的含義的是什麼?如果返回「找不到文件」的提示,則可用header(函數),其語句為?
500 Internal Server Error 服務器遇到了意料不到的情況,不能完成客戶的請求
Header(「 HTTP/1.0 404 NOT FOUND」);
二、數組函數arsort()的作用是什麼?語句err_reporting(2047)的作用是什麼?
arsort:對數組進行逆向排序並保持索引關係;
error_reporting(2047)的作用是:report All errors and warnings
三、語句include和require都能把另外一個文件包含到當前文件中,它們的區別是___;為避免多此包含同一個文件,可以用語句_____來代替它們。
在如何處理失敗時,include() 產生一個警告而 require() 則導致一個致命錯誤; require_once()/include_once()
四、get_magic_quotes_gpc的作用是_______
本函數取得 PHP 環境配置的變量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。返回 0 表示關閉本功能;返回 1 表示本功能打開。當 magic_quotes_gpc 打開時,所有的 『 (單引號), 」 (雙引號), (反斜線) and 空字符會自動轉為含有反斜線的溢出字符。
五、在php中, heredoc是一種特殊的字符串, 他的結束標誌必須是_____
結束標識符所在的行不能包含任何其它字符除」;」
六、寫出一個正則表達式, 把$string中的所有數字全部刪除
preg_replace(『/d/U』,』』,$string);
七、找出/data1/source 目錄中大於100k 的文件, 並複製到 ~/tmp/35/下
find /data1/source +size 100k | cp ~/temp/35/
八、perl –pi –e 『s|ABCD|Linux|g』 `find ./ -type f`的含義是
find ./-type f:找尋當前目錄下的類型為f的文件
九、10 2 * * * /data0/apache/schedule/ussd/topnews/import_data.pl /dev/null 的含義:_______將import_data.pl清空或刪除
十、rsync -avu 105903.zip 218.206.86.68::mmsres/resource/291/205的含義:_________備份數據用
-a 歸檔模式,遞歸傳輸文件;
-v 詳細模式輸出;
-u, –update 僅僅進行更新,也就是跳過所有已經存在於DST,並且文件時間晚於要備份的文件。(不覆蓋更新的文件)
十一、寫出x,y的值
十二、使用純CSS實現未知寸的圖片(但高度都小於200px) 在200px的正方形容器中水平和垂直居中,HTML代碼如下
程序員面試必備PHP基礎面試題 – 第十一天
一、兩張表 city表和province表。分別為城市與省份的關係表。
表名:city
id City Provinceid
1 廣州 1
2 深圳 1
3 惠州 1
4 長沙 2
5 武漢 3
………. 廣州
表名稱:province:
id Province
1 廣東
2 湖南
3 湖北
……….
1、寫一條sql語句關係兩個表,實現:顯示城市的基本信息。顯示字段:城市id ,城市名, 所屬省份 。
如:
Id(城市id) Cityname(城市名) Privence(所屬省份)
2、如果要統計每個省份有多少個城市,請用group by 查詢出來。顯示字段:省份id ,省份名,包含多少個城市。
二、主鍵 和外鍵表示什麼?一般用於做什麼?
主鍵:能夠唯一表示數據表中的每個記錄的字段或者字段的組合就稱為主鍵。一個主鍵是唯一識別一個表的每一行記錄,但這只是其作用的一療分,主鍵的主要作用是將記錄和存放在其他表中的數據進行關聯,在這一點上,主鍵是不同表中各記錄間的簡單指針,主鍵約整就是確定表中的每一條記錄,主鍵不能是空值,唯一約束是用於指定一個或多個列的組合值具有唯一性,以防止在列中輸入重複的值,所以,主鍵的值對用戶而言是沒有什麼意義,並且和它賦予的值也沒有什麼特別聯繫。
外鍵:若有兩個表A,B,C是A的主鍵,而B中也有C字段,則C就是表B的外鍵,外鍵約束主要用來維護兩個表之間數據的一致性。A為基本表,B為信息表。
在數據庫中,常常不只是一個表,這些表之間也不是相互獨立的,不同的表之間需要建立一種關係,才能將它們的數據相互溝通,而在這個溝通過程中,就需要表中有一個字段作為標誌,不同的記錄對應的字段取值不能相同,也不能是空白的,通過這個字段中不同的值可以區別各條記錄,就像我們區別不同的人,每個人都有名字,但它卻不能作為主鍵,因為人名很容易出現重複,而身份證號是每個人都不同的,所以可以根據它來區別不同的人,數據庫的表中作為主鍵的段段就要像人的身份證號一樣,必須是每個記錄的值都不同,這才能根據
主鍵的值來確定不同的記錄。
關係:外鍵一定是另外某個表的主鍵。
三、select now(),Date_ADD(now(),INTERVAL 14 day),Date_SUB(now(),INTERVAL 3 Day) from table; 會獲得什麼內容,請寫出來。
會獲得三條數據:
第一條:當前時間;
第二條:當前時間加上14天;
第三條:當前時間減去3天。
四、您所知道的MYSQL 數據庫備份,還原方式有哪幾種?
備份:
一,搭建主從架構,master-slave,通過binlog文件同步複製主庫的數據,也可以直接通過binlog文件恢複數據。
二,通過系統計劃任務執行mysqldump做周期性全備份。
三,物理備份,直接拷貝數據文件、參數文件、日誌文件。
還原:
一.通過mysql操作工具,如phpmyadmin,sqlyog等導入備份過的數據庫文件。
二.將物理備份的文件拷貝到mysql的data目錄下
五、內容管理系統中,表message有如下字段
id 文章id
title 文章標題
content 文章內容
category_id 文章分類id
hits 點擊量
創建上表,寫出MySQL語句
六、同樣上述內容管理系統:表comment記錄用戶回復內容,字段如下
comment_id 回復id
id 文章id,關聯message表中的id
comment_content 回復內容
現通過查詢數據庫需要得到以下格式的文章標題列表,並按照回複數量排序,回復最高的排在最前面
文章id 文章標題 點擊量 回複數量
用一個SQL語句完成上述查詢,如果文章沒有回復則回複數量顯示0
七、內容管理系統,表category保存分類信息,字段如下
category_id int(4) not null auto_increment;
category_name varchar(40) not null;
用戶輸入文章時,通過選擇下拉菜單選定文章分類
寫出如何實現這個下拉菜單
八、PHP文件操作
1、內容管理系統:用戶提交內容後,系統生成靜態HTML頁面;寫出實現的基本思路
2、簡單描述用戶修改發佈內容的實現流程和基本思路
1)當用戶提交後生成一個由url地址MD5後的文件的編譯頁面,用文件處理file函數生成一個模板合成頁,判斷模板編譯頁是否有,模板頁無或者編譯頁的創建時間戳小於模板頁的修改時間都會從新生成編譯頁面,編譯後的頁面會調用對應數據庫的值顯示在頁面中,通過對內存數據的讀取釋放,顯示出我們看到的靜態數據,然後用file文件將其保存起來生成靜態的頁面
2)當用戶修改了發佈內容都會修改數據相關的內容,並通過編譯頁面更新靜態數據並用文件的方式緩存起來,當用戶查看時將不做任何數據庫查找,直接調用該緩存文件即可
PHP程序員上機面試題(並附答案,回答好的加分)
某大公司的PHP面試題
管理提醒: 本帖被 haowubai 執行取消置頂操作(2009-07-30)
1. 如何用php的環境變量得到一個網頁地址的內容?ip地址又要怎樣得到?
[php]
echo $_SERVER [‘PHP_SELF’];
echo $_SERVER [‘SERVER_ADDR’];
[/php]
2. 求兩個日期的差數,例如2007-2-5 ~ 2007-3-6 的日期差數
[php]
$begin=strtotime(‘2007-2-5’);
$end=strtotime(‘2007-3-6’);
echo ($end-$begin)/(24*3600);
[/php]
3. 請寫一個函數,實現以下功能:
字符串「open_door」 轉換成 「OpenDoor」、」make_by_id」 轉換成 」MakeById」。
[php]
function changeStyle( $str) {
/*$str = str_replace ( “_”, ” “, $str );
$str = ucwords ( $str );
$str = str_replace ( ” “, “”, $str );
return $str;*/
$arrStr=explode(‘_’,$str);
foreach($arrStr as $key=$value){
$arrStr[$key]=strtoupper(substr($value,0,1)).substr($value,1);
}
return implode(”,$arrStr);
}
$s = “open_door”;
echo changeStyle ( $s );
[/php]
4. 要求寫一段程序,實現以下數組$arr1轉換成數組$arr2:
[php]$arr1 = array (
‘0’ = array (‘fid’ = 1, ‘tid’ = 1, ‘name’ =’Name1′ ),
‘1’ = array (‘fid’ = 1, ‘tid’ = 2 , ‘name’ =’Name2′ ),
‘2’ = array (‘fid’ = 1, ‘tid’ = 5 , ‘name’ =’Name3′ ),
‘3’ = array (‘fid’ = 1, ‘tid’ = 7 , ‘name’ =’Name4′ ),
‘4’ = array (‘fid’ = 3, ‘tid’ = 9, ‘name’ =’Name5′ )
);
$arr2 = array (
‘0’ = array (
‘0’ = array ( ‘tid’ = 1, ‘name’ = ‘Name1’),
‘1’ = array ( ‘tid’ = 2, ‘name’ = ‘Name2’),
‘2’ = array ( ‘tid’ = 5, ‘name’ = ‘Name3’),
‘3’ = array ( ‘tid’ = 7, ‘name’ = ‘Name4’)
),
‘1’ = array (
‘0’ = array ( ‘tid’ = 9, ‘name’ = ‘Name5’ )
)
);
?php
$arr1 = array (
‘0’ = array (‘fid’ = 1, ‘tid’ = 1, ‘name’ =’Name1′ ),
‘1’ = array (‘fid’ = 1, ‘tid’ = 2 , ‘name’ =’Name2′ ),
‘2’ = array (‘fid’ = 1, ‘tid’ = 5 , ‘name’ =’Name3′ ),
‘3’ = array (‘fid’ = 1, ‘tid’ = 7 , ‘name’ =’Name4′ ),
‘4’ = array (‘fid’ = 3, ‘tid’ = 9, ‘name’ =’Name5′ )
);
function changeArrayStyle($arr){
foreach($arr as $key=$value){
$result[$value[‘fid’]][]=$value;
}
return array_values($result);
}
$arr2=changeArrayStyle($arr1);
echo “pre”;
var_dump($arr2);
[/php]
5. 請簡述數據庫設計的範式及應用。
一般第3範式就足以,用於表結構的優化,這樣做既可以避免應用程序過於複雜同時也避免了SQL語句過於龐大所造成系統效率低下。
ANSWER:
第一範式:若關係模式R的每一個屬性是不可再分解的,再屬於第一範式。
第二範式:若R屬於第一範式,且所有的非碼屬性都完全函數依賴於碼屬性,則為第二範式。
第三範式:若R屬於第二範式,且所有的非碼屬性沒有一個是傳遞函數依賴於候選碼,則屬於第三範式。
6.一個表中的Id有多個記錄,把所有這個id的記錄查出來,並顯示共有多少條記錄數,用SQL語句及視圖、存儲過程分別實現。
存儲過程:
[php]
DELIMITER //
create procedure proc_countNum(in columnId int,out rowsNo int)
begin
select count(*) into rowsNo from member where member_id=columnId;
end
call proc_countNum(1,@no);
select @no;
[/php]
視圖:
create view v_countNum as select member_id,count(*) as countNum from member group by member_id
select countNum from v_countNum where member_id=1
7 表中有A B C三列,用SQL語句實現:當A列大於B列時選擇A列否則選擇B列,當B列大於C列時選擇B列否則選擇C列。
[php]select
case
when first_namemiddle_name then
case when first_namelast_name then first_name
else last_name end
else
case when middle_namelast_name then middle_name else last_name
end
end as name
from member
[/php]
8請簡述項目中優化sql語句執行效率的方法,從哪些方面,sql語句性能如何分析?
ANSWER: sql優化有鳥用,不如直接加索引。
9 如果模板是用smarty模板。怎樣用section語句來顯示一個名為$data的數組。比如:
[php]$data = array(
[0] = array( [id]=8 [name]=』name1′)
[1] = array( [id]=10 [name]=』name2′)
[2] = array( [id]=15 [name]=』name3′)
……
)[/php]
寫出在模板頁的代碼? 若用foreach語句又要怎樣顯示呢?
占無答案.
10 寫一個函數,能夠遍歷一個文件夾下的所有文件和子文件夾。(目錄操作)
[php] ?php
$d = dir(dirname(__file__));
//echo “Handle: ” . $d-handle . “\n”;
//echo “Path: ” . $d-path . “\n”;
while ( false !== ($entry = $d-read ()) ) {
echo $entry . “br /”;
}
$d-close ();
[/php]
11 兩張表 city表和province表。分別為城市與省份的關係表。
city:
id City Provinceid
1 廣州 1
2 深圳 1
3 惠州 1
4 長沙 2
5 武漢 3
………. 廣州
province:
id Province
1 廣東
2 湖南
3 湖北
……….
(1) 寫一條sql語句關係兩個表,實現:顯示城市的基本信息。?
(2) 顯示字段:城市id ,城市名, 所屬省份 。
如:
Id(城市id) Cityname(城市名) Privence(所屬省份)
。。。。。。。。。
。。。。。。。。。
(2)如果要統計每個省份有多少個城市,請用group by 查詢出來。?
顯示字段:省份id ,省份名,包含多少個城市。
ANSWER:
1.select A.id,A.Cityname,B.Province from city A,province B where A.provinceid=B.id
2.select B.id,B.Province,count(*) as num from city A,province B where A.provinceid=B.id group by B.id
12. 按照你的經驗請簡述軟件工程進行軟件開發的步驟。以下工具Rational Rose、PowerDesigner、Project、VSS或CVS、TestDirector使用過那種,有缺點是什麼?
公司用dbdesigner及cvs,測試管理工具用的是Mantis
13. 請簡述操作系統的線程與進程的區別。列舉LINUX下面你使用過的軟件?
14. 請使用偽語言結合數據結構冒泡排序法對以下一組數據進行排序 10 2 36 14 10 25 23 85 99 45。
[php]function bubble_sort( $arr){
$number=count($arr);
for($i=0;$i$number-1;$i++){
for($j=0;$j$number-1-$i;$j++){
if($arr[$j]$arr[$j+1]){
$tmp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$tmp;
}
}
}
}
$str=”10 2 36 14 10 25 23 85 99 45″;
$arr=explode(” “,$str);
bubble_sort($arr);
echo “pre”;
var_dump($arr);
[/php]
PHP程序員崗位招聘面試題有哪些
可能會問以下問題:(這是一個多元的問題,這和你應聘的公司規模,行業,技術層次有一定的關係)
1、你會使用什麼框架?
2、你知道PHP有哪些框架?
3、你知道或使用過哪些PHP庫?
4、你用PHP寫過框架嗎?
5、你有作品嗎?
6、你怎麼調試PHP?
7、你知道設計模型嗎?
8、說一下PHP個版本的差異。
9、說一下某函數的具體作用。
10、給你一個算法讓你用PHP實現。
… …
總之有很多問題可能是意料不到的,所以建議你去牛客網多練習一下或者去海投簡歷體驗應聘過程,失敗沒什麼大不了的。
php面試題解答
1,
var x=document.getElementById(“img1”);
var title=document.getElementById(“img1”).title;
var sina_title=document.getElementById(“img1”).sina_title;
2,serialize(),unserialize();
3,編碼方式不同,urlencode()將字串以URL編碼。例如空格就會變成加號。
rawurlencode()將url編碼成url的字符串專用格式,特殊字符迴轉換成百分號後面加兩個十六子介數字的格式。
4,strip_tags(),html_entity_decode();
5,$str=preg_replace(“/\script.*\.*\\/script\/i”,””,$str);
6,左連接,左連接的表如果沒有匹配的數據不影響結果。
7
SELECT name,score FROM tl_user LEFT JOIN tl_score ON tl_user.ID=tl_score.ID
7 system(),exec(),passthru()
8,json_decode ,json_encode
9 isset() empty()
10 後者的權限大於前者,後者是OFF的話,前者就算是E-ALL也沒用。
11,$_SERVER[‘REMOTE_ADDR’];
12,incov()
echo iconv(“gbk”,””UTF-8,”我們”);
mb_convert_encoding($str, “GBK”, “UTF-8”)
13 explode() split() ;implode() join()
14 注意事項挺多的,懶得寫。
二
1,超時,服務器已經關閉連接
2 靜態表字段長度固定,自動填充,讀寫速度很快,便於緩存和修復,但比較占硬盤,動態表是字段長度不固定,節省硬盤,但更複雜,容易產生碎片,速度慢,出問題後不容易重建。
3InnoDB和MyISAM是在使用MySQL最常用的兩個表類型,各有優缺點,視具體應用而定。基本的差別為:MyISAM類型不支持事務處理等高級處理,而InnoDB類型支持。MyISAM類型的表強調的是性能,其執行數度比InnoDB類型更快,但是不提供事務支持,而InnoDB提供事務支持已經外部鍵等高級數據庫功能。
MyIASM是IASM表的新版本,有如下擴展:
二進制層次的可移植性。
NULL列索引。
對變長行比ISAM表有更少的碎片。
支持大文件。
更好的索引壓縮。
更好的鍵嗎統計分佈。
更好和更快的auto_increment處理。
1.MySQL最大的優勢在於MyISAM引擎下的簡單SELECT,INSERT和UPDATE快速操作
2.MyISAM類型的數據文件可以在不同操作系統中COPY,這點很重要,布署的時候方便點。
以下是一些細節和具體實現的差別:
1.InnoDB不支持FULLTEXT類型的索引。
2.InnoDB 中不保存表的具體行數,也就是說,執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行,但是MyISAM只要簡單的讀出保存好的行數即可。注意的是,當count(*)語句包含 where條件時,兩種表的操作是一樣的。
3.對於AUTO_INCREMENT類型的字段,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中,可以和其他字段一起建立聯合索引。
4.DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除。
5.LOAD TABLE FROM MASTER操作對InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表,導入數據後再改成InnoDB表,但是對於使用的額外的InnoDB特性(例如外鍵)的表不適用。
另外,InnoDB表的行鎖也不是絕對的,如果在執行一個SQL語句時MySQL不能確定要掃描的範圍,InnoDB表同樣會鎖全表,例如update table set num=1 where name like 「%aaa%」
以暫對存儲引擎的認識,覺得 InnoDB 支持外鍵,在數據量可以用「龐大」來形容時,在有良好的 INDEX 的基礎上,InnoDB 的查詢速度應該比 MyISAM 要快。
在 Falcon 有穩定版本前,我想 MyISAM 是一個可用的選擇方案。
任何一種表都不是萬能的,只用恰當的針對業務類型來選擇合適的表類型,才能最大的發揮MySQL的性能優勢
3, 都是1 ^^懶得回答了,睡覺去。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/194653.html