diff --git a/apachesolr.index.inc b/apachesolr.index.inc
index 846fda2..2f15e15 100644
--- a/apachesolr.index.inc
+++ b/apachesolr.index.inc
@@ -141,7 +141,6 @@ function apachesolr_index_status($env_id) {
       $query .= " AND aie.entity_type = '%s'";
       $arguments[] = $entity_type;
     }
-    $query .= " ORDER BY aie.entity_id ASC";
     $remaining += db_result(db_query($query, $arguments));
 
   }
diff --git a/apachesolr.install b/apachesolr.install
index 5a73825..49fd65d 100644
--- a/apachesolr.install
+++ b/apachesolr.install
@@ -179,6 +179,7 @@ function apachesolr_schema() {
         'type' => 'blob',
         'not null' => TRUE,
         'size' => 'big',
+        'serialize' => TRUE,
       ),
     ),
     'primary key' => array('env_id', 'name'),
diff --git a/apachesolr.module b/apachesolr.module
index 428e7ee..dc99c7f 100644
--- a/apachesolr.module
+++ b/apachesolr.module
@@ -1392,12 +1392,15 @@ function apachesolr_environment_variable_get($env_id, $name, $default = NULL) {
  * @see variable_set()
  */
 function apachesolr_environment_variable_set($env_id, $name, $value) {
-  // @todo - fix this query since it's not standard SQL.
-  // http://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/variable_set/6
-  $query = "INSERT INTO {apachesolr_environment_variable} (env_id, name, value)
-    VALUES ('%s','%s','%s')
-    ON DUPLICATE KEY UPDATE env_id = '%s', name = '%s', value = '%s'";
-  db_query($query, array($env_id, $name, serialize($value), $env_id, $name, serialize($value)));
+  $already_exists = db_result(db_query("SELECT 1 FROM {apachesolr_environment_variable} WHERE env_id = '%s' AND name = '%s'", $env_id, $name));
+  $update = $already_exists ? array('env_id', 'name') : array();
+
+  $environment_var = array(
+    'env_id' => $env_id,
+    'name' => $name,
+    'value' => $value,
+  );
+  drupal_write_record('apachesolr_environment_variable', $environment_var, $update);
   apachesolr_environments_clear_cache();
 }
 
@@ -1947,10 +1950,16 @@ function apachesolr_entity_update($entity, $type) {
 
     // If we haven't seen this entity before it may not be there, so merge
     // instead of update.
-    $query = "INSERT INTO {{$indexer_table}} (entity_type, entity_id, bundle, status, changed)
-      VALUES ('%s', %d, '%s', %d, %d)
-      ON DUPLICATE KEY UPDATE entity_type = '%s', entity_id = %d, bundle = '%s', status = %d, changed = %d";
-    db_query($query, array($type, $id, $bundle, 1, APACHESOLR_REQUEST_TIME, $type, $id, $bundle, 1, APACHESOLR_REQUEST_TIME));
+    $already_exists = db_result(db_query("SELECT 1 FROM {{$indexer_table}} WHERE entity_id = %d", $id));
+    $update = $already_exists ? array('entity_id') : array();
+    $entity_object = array(
+      'entity_id' => $id,
+      'entity_type' => $type,
+      'bundle' => $bundle,
+      'status' => 1,
+      'changed' => APACHESOLR_REQUEST_TIME,
+    );
+    drupal_write_record($indexer_table, $entity_object, $update);
   }
 }
 
diff --git a/apachesolr_search.module b/apachesolr_search.module
index 5db2a5f..10fb5d5 100644
--- a/apachesolr_search.module
+++ b/apachesolr_search.module
@@ -371,26 +371,9 @@ function apachesolr_search_page_load($page_id, $reset = FALSE) {
 
 function apachesolr_search_page_save($search_page) {
   if (!empty($search_page) && db_table_exists('apachesolr_search_page')) {
-    $query = "INSERT INTO {apachesolr_search_page} (page_id, label, description, env_id, search_path, page_title, settings)
-      VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s')
-      ON DUPLICATE KEY UPDATE page_id = '%s', label = '%s', description = '%s', env_id = '%s', search_path = '%s', page_title = '%s', settings = '%s'";
-    $arguments = array(
-      $search_page['page_id'],
-      $search_page['label'],
-      $search_page['description'],
-      $search_page['env_id'],
-      $search_page['search_path'],
-      $search_page['page_title'],
-      serialize($search_page['settings']),
-      $search_page['page_id'],
-      $search_page['label'],
-      $search_page['description'],
-      $search_page['env_id'],
-      $search_page['search_path'],
-      $search_page['page_title'],
-      serialize($search_page['settings']),
-    );
-    db_query($query, $arguments);
+    $already_exists = db_result(db_query("SELECT 1 FROM {apachesolr_search_page} WHERE page_id = '%s'", $search_page['page_id']));
+    $update = $already_exists ? array('page_id') : array();
+    drupal_write_record('apachesolr_search_page', $search_page, $update);
   }
 }
 
