5)、テーブルをロックし、トランザクション処理を最適化します。 a. SELECT ステートメントを使用して初期データを取得し、いくつかの計算を通じて UPDATE ステートメントを使用して新しい値をテーブルに更新します。 WRITE キーワードを含む LOCK TABLE ステートメントにより、UNLOCK 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 を募集しているようです、は~~ |