ホームページ  >  記事  >  バックエンド開発  >  PHP プログラマーの面接の質問 (古典的な概要、主に mysql)

PHP プログラマーの面接の質問 (古典的な概要、主に mysql)

WBOY
WBOYオリジナル
2016-07-25 08:59:251096ブラウズ
  1. mysql_query("BEGIN");
  2. mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')";
  3. mysql_query("SELECT * FROM `orderinfo` where customerid=".$id") ;
  4. mysql_query("COMMIT");
コードをコピー

5)、テーブルをロックし、トランザクション処理を最適化します。 a. SELECT ステートメントを使用して初期データを取得し、いくつかの計算を通じて UPDATE ステートメントを使用して新しい値をテーブルに更新します。 WRITE キーワードを含む LOCK TABLE ステートメントにより、UNLO​​CK TABLES コマンドが確実に実行されます。 インベントリを挿入、更新、または削除するための他のアクセス権はありません。

mysql_query("ロックテーブル顧客情報読み取り、注文情報書き込み"); mysql_query("SELECT customerid FROM `customerinfo` where id=".$id); mysql_query("UPDATE `orderinfo` SET ordertitle='$title' where customerid=".$id); mysql_query("テーブルのロックを解除");

6)、外部キーを使用してロックテーブルを最適化する a. customerinfo の customerid を orderinfo の customerid にマッピングします。 有効な customerID のないレコードは orderinfo に書き込まれません。

テーブルの作成顧客情報 ( customerid INT NOT NULL、 主キー(顧客ID) )TYPE = INNODB; CREATE TABLE 注文情報 ( orderid INT NOT NULL、 customerid INT NOT NULL、 主キー(顧客ID,注文ID), 外部キー (customerid) 参照 customerinfo (customerid) カスケード削除時 )TYPE = INNODB;

注: 「ON DELETE CASCADE」、このパラメータにより、customerinfo テーブル内のレコードが削除されると、注文も削除されます。 テーブル内のこのユーザーのすべてのレコード。外部キーを使用する場合は、トランザクション セキュリティ タイプを INNODB として定義する必要があることに注意してください。

7)、インデックスを作成します。 a.フォーマット: (通常のインデックス)-> 作成:CREATE INDEX ON テーブル名 (インデックス フィールド) 変更: ALTER TABLE テーブル名 ADD INDEX [インデックス名] (インデックス フィールド) テーブルに指定したインデックスを作成します: CREATE TABLE tablename([...],INDEX[インデックス名](インデックス フィールド)) (一意のインデックス)-> 作成:CREATE UNIQUE ON テーブル名 (インデックス フィールド) 変更: ALTER TABLE テーブル名 ADD UNIQUE [インデックス名] (インデックス フィールド) テーブルを作成し、インデックスを指定します: CREATE TABLE tablename([...],UNIQUE[インデックス名](インデックス フィールド)) (主キー)-> これは一意のインデックスであり、通常はテーブルの作成時に作成されます。形式は次のとおりです。 CREATA TABLE テーブル名 ([...],PRIMARY KEY[インデックスフィールド])

8)、クエリステートメントを最適化する a. 同じフィールドに対して比較演算を実行し、確立されたインデックス フィールドに対する関数演算を最小限に抑えることが最善です。 例 1:

SELECT * FROM order WHERE YEAR(orderDate) 例 2: SELECT * FROM order WHERE addtime/7 例 3: SELECT * FROM 注文 WHERE タイトル「%good%」のような; SELECT * FROM order WHERE title>="good" and name6. 現在時刻を取得するための MYSQL の関数は何ですか?、日付をフォーマットする関数は次のとおりです (2 点) 答え:now(),dateformat()

この PHP 面接の質問は、mysql のパフォーマンスの最適化に焦点を当てています。PHP プログラミングに精通している mysql データベースの DBA を募集しているようです、は~~



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。